1.如何从一个大项目中,迅速的定位执行比较慢的语句(定位慢查询)?
首先了解mysql数据库的一些运行状态查询
查询数据库所有状态信息
show status ;
查询mysql已经启动了多长时间时间
show status like 'uptime'
查询系统查询的次数、更新次数、删除次数、添加的次数
show [global] status like 'com_select';
show [global] status like 'com_update';
show [global] status like 'com_delete';
show [global] status like 'com_insert';
[global] 可选可不选,mysql默认session会话,指当前连接到现在的请求数,也就是本次mysql服务器从启动和没关闭之前,所有进行的增删改查,如果想看这个数据库从建立到现在一共进行了多少次增删改查使用global。
显示慢查询的次数
show status like 'slow_queries'
显示慢查询的定义时间
show VARIABLES like 'long_query_time'
mysql默认慢查询的时间是10s
修改慢查询的时间
set long_query_time=1;
mysql默认不会把慢查询的sql语句,记录到日志中,需要在启动的时候,指定记录慢查询才可以。