1、Mysql客户端连接成功后,通过show status命令可获取服务器状态信息。通过判断com_insert和com_select以及更新和删除来判断当前数据库的应用是以插入更新为主还是以查询操作为主,以及更重类型的SQL大致的执行比例是多少。注意,对于更新操作的计算,是对执行次数的技术,不论提交还是回滚都会进行累加。
2、接着通过两种方式定位执行效率较低的SQL语句:
- 通过慢查询日志定位那些执行效率较低的SQL语句。
- 可以使用show processlist命令查看昂前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看SQL的执行情况,同时对一些锁表操作进行优化。
3、通过explain分析低效SQL的执行计划。
explain select from…*
可以的得到几个参数:id,select_type,table,type
注意:type为访问类型,
- All是全表扫描
- index索引全扫描
- range索引范围扫描(常用于<、<=、>、>=、between等操作符)
- ref唯一索引的前缀扫描或非唯一索引扫描(等值查询条件)
- eq_ref仅限于唯一索引,表中只有一条记录匹配,多表连接中使用pk或者unique index作为关联条件。
- const/system根据主键pk或者唯一索引unque index进行的查询。
- NULL不用访问表或者索引,直接得到结果。