1、MySQL索引详细介绍
2、MySql索引实现原理
索引的本质
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构
提取句子主干,就可以得到索引的本质:索引是一种数据结构。
MySQL索引-B+树(看完你就明白了)为什么MySQL数据库索引选择使用B+树?
3、索引
Mysql创建索引
4、explain
从最好到最差的连接类型为system、const、eq_reg、ref、range、indexhe和ALL
Mysql Explain 详解MySQL explain详解
5、mysql最佳左前缀原则 6、开启慢查询日志, explain分析, show profile ,数据库参数调优
查看:show variables like ‘%slow_query_log%’;
开启慢查询(只对当前数据库生效,mysql重启后失效):
set global slow_query_log=1;
永久生效,修改配置文件【my.cnf】:
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/logs/slow.log
long_query_time = 1
7、小表驱动大表,小的数据集驱动大的数据集
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate
8、show profile
show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量。
show profile cpu,block io for query Query_ID;/Query_ID为#3步骤中show profiles列表中的Query_ID/
MySQL高级知识(十一)——Show Profile
调优参考:
9、mysql 全局日志 10、mysql锁机制。读锁,写锁,表锁,行锁。
一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久(Durability)。
# 手动增加表锁
# lock table 表名字 read(write), 表名字2 read(write),
lock table mylock read;
# 查看表上加过的锁:
show OPEN TABLES where In_use > 0;
# 释放表锁:
unlock tables;
# 如何分析表锁定
show status like 'table%'
# 查看隔离级别
show variables like 'tx_isolation';
# 或者(前者为空,后者执行不成功,环境问题?)
select @@tx_isolation;
# MySQL如何锁定一行?在SQL语句后面加上for update.
select * from tb where a=8 for update
# 查看行锁
show status like 'innodb_row_lock%';
MySQL 四种隔离级别及测试MySQL 事务mysql查看锁表方法详解
MySQL常见的七种锁详细介绍
MySQL锁总结
11、mysql主从复制