可以通过一下两种方式定位执行效率低的SQL语句。
- 慢查询日志:通过慢查询日志定位那些执行效率较低的SQ语句,用--log-slow-queries[=file_name]选项启动时,mysqld写一个包含搜于执行时间超过long_query_time秒的SQL语句的日志文件。
- show processlist:慢查询日志在查询结束以后才记录,所以再应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看SQL的执行情况,同时对一些锁表操作进行优化。