[MySQL优化] 如何定位效率较低的SQL
[MySQL优化] -- 如何定位效率较低的SQL
时间:2010-2-28来源:HaCMS开源社区 作者:zhenpao
一般通过以下两种方式定位执行效率较低的 SQL 语句。 慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态、是否锁表等,可以实时地查 ...
一般通过以下两种方式定位执行效率较低的 SQL 语句。
慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的 执行情况,同时对一些锁表操作进行优化。
下面我们举例说明一下,如何通过慢查询日志定位执行效率底的 SQL 语句:
开启慢查询日志 , 配置样例:
[mysqld]
log-slow-queries
在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效。慢查询 日志将写入参数 DATADIR (数据目录)指定的路径下,默认文件名是 host_name-slow.log 。
和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。下例中演示了慢查询日志的设置和读取过程。
( 1 )首先查询一下 long_query_time 的值 。
mysql> show variables like 'long%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
( 2 )为了方便测试,将修改慢查询时间为 5 秒。
mysql> set long_query_time=5;
Query OK, 0 rows affected (0.02 sec)
( 3 )依次执行下面两个查询语句。
第一个查询因为查询时间低于 5 秒而不会出现在慢查询日志中:
mysql> select count(*) from order2008;
+----------+
| count(*) |
+----------+
| 208 |
+----------+
1 row in set (0.00 sec)
第二个查询因为查询时间大于 5 秒而应该出现在慢查询日志中:
mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
| 655296
相关文档:
格式:grant [PRIVILEGES] on [databaseName.tableName] to [userName]@[host] identified by [password] with grant option;
eg1: grant select on mysql.user to wqh@localhost
eg2:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ......
1.查看档案
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000001 | 150462942 |
| ablelee.000002 | 125 |
| ablelee.000003 | 106 |
+----------------+-----------+
2.删除bin-log(删除ablelee.000003之前的而没有包含ablel ......
一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误:
undefined reference to `mysql_init@4'
undefined reference to `mysql_real_connect@32'
undefined reference to `mysql_close@4'
我遂去MySQL官网下了个最新的Windows C Connect ......
MySql版本信息的查询:
1、通过mysql -V命令查询
C:\mysql\bin>mysql -V
mysql Ver 12.22 Distrib 4.0.18, for Win95/Win98 (i32)
2、通过mysql模式下的status命令查看状态
mysql> status
--------------
mysql Ver 12.22 Distrib 4.0.18, for Win95/Win98 (i32)
Connection id: &nbs ......