第一章,DBA5分钟速成
本章知识点如下:
- 寻找运行慢SQL的语句:
- show full processlist查看所有正在执行的进程及执行的语句耗时;
- 命令后面G可以让命令按行显示(默认是按列)。
- 手动用ad hoc方式执行该sql,大于10ms的查询通常会有问题(有可能是索引问题,也可能是结果集太大使得结果无意义)。
- 对于低效的Delete和Update语句,可以通过将其改为Select大概判断其效率。
- 生成执行计划QEP(query excution plan),注意QEP结果不一定是真正的执行结果,如row返回的行数可能是预估数字。
- 优化查询:
- 可以添加索引,单不是唯一或最好的方法。添加索引不可以直接再生产环境上进行,因为一个DDL可能执行数日,ALTER语句是阻塞性的;同时索引会带来额外开销。
- 优化过后需要做验证,QEP及执行ad hoc进行验证。
- 正确方案:验证表结构(show create table TABLENAME),查看表数据量(show table status like ‘TABLENAME’),从业务角度确认添加索引带来的影响和开销。
- 备选方案:使用现有索引,在where字句中显示加入索引列条件,使用现用索引。