查看mysql线程的状态
show processlist;
1.查看表被锁状态show OPEN TABLES where In_use > 0; 这个语句记录当前锁表状态
查看正在锁的事物:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事物:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
清空表缓存
mysql> flush tables;
执行计划查看 explain
mysql> explain select * from clm_treatment; +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SIMPLE | clm_treatment | NULL | ALL | NULL | NULL | NULL | NULL | 845 | 100.00 | NULL | +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------+ 1 row in set, 1 warning (0.00 sec)
每一个字段的含义
- id
表示查询中select操作表的顺序,按顺序从大到依次执行 - select_type :
该表示选择的类型,可选值有: SIMPLE(简单的), - type :
该属性表示访问类型,有很多种访问类型。
最常见的其中包括以下几种: ALL(全表扫描), index(索引扫描),range(范围扫描),ref (非唯一索引扫描),eq_ref(唯一索引扫描,),(const)常数引用, 访问速度依次由慢到快。其中 : range(范围)常见与 between and …, 大于 and 小于这种情况。
提示 : 慢SQL是否走索引,走了什么索引,也就可以通过该属性查看了。 - table :
表示该语句查询的表 - possible_keys :
顾名思义,该属性给出了,该查询语句,可能走的索引,(如某些字段上索引的名字)这里提供的只是参考,而不是实际走的索引,也就导致会有possible_Keys不为null,key为空的现象。 - key :
显示MySQL实际使用的索引,其中就包括主键索引(PRIMARY),或者自建索引的名字。 - key_len :
表示索引所使用的字节数, - ref :
连接匹配条件,如果走主键索引的话,该值为: const, 全表扫描的话,为null值 - rows :
扫描行数,也就是说,需要扫描多少行,采能获取目标行数,一般情况下会大于返回行数。通常情况下,rows越小,效率越高, 也就有大部分SQL优化,都是在减少这个值的大小。注意: 理想情况下扫描的行数与实际返回行数理论上是一致的,但这种情况及其少,如关联查询,扫描的行数就会比返回行数大大增加) - Extra
这个属性非常重要,该属性中包括执行SQL时的真实情况信息,如上面所属,使用到的是”using where”,表示使用where筛选得到的值,常用的有:
“Using temporary”: 使用临时表 “using filesort”: 使用文件排序