sql优化-1
1 优化的一般步骤
了解各种sql的执行频率: show [global | session] status
global: 自数据库上次启动
session: 当前连接(默认)
show status like 'Com_%'
通常关心这几个
Com_select
Com_insert
Com_update
Com_delete
通过上面参数可以了解到当前数据库是插入更新为主还是查询操作为主
SHOW GLOBAL STATUS LIKE 'Slow_queries%' 慢查询次数
show global status like 'Connections%' 试图连接mysql数据库的次数
2 定位执行较低的sql语句
方式一:
将slow-query-log设置为1,mysql会将超过long_query_time参数所设定阈值的sql,写入slow_query_log_file参数
步骤:
设置慢查询日志1:
set global slow_query_log=1; SHOW VARIABLES LIKE "%slow_query_log%";
时间10秒,
show variables like "%long_query_time%";
睡11秒和5秒
select sleep(11) select sleep(5)
能看到只有一个慢的sql写入到了文件中
方式二:
慢查询日志查询结束后记录,在出现问题的时候查询慢查询日志不能定位问题,
查看当前mysql在进行的线程,包括线程的状态、是否锁表等。实时的查看sql的执行情况,对锁表操作进行优化。
show processlist
3 通过explain分析低效的执行计划
customer表:
payment表:
type有哪些值,见《深入浅出mysql-数据库开发、优化与管理维护》212页, 不赘述了。