MySQL语句如何优化

30次阅读
没有评论

共计 1488 个字符,预计需要花费 4 分钟才能阅读完成。

MySQL 语句如何优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

开启慢查询日志,配置样例:

[mysqld] log-slow-queries

在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效。慢查询日志将写入参数 DATADIR(数据目录)指定的路径下,默认文件名是 host_name-slow.log。

和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。下例中演示了慢查询日志的设置和读取过程。

首先查询一下 long_query_time 的值。

mysql show variables like long% +—————–+——-+ | Variable_name | Value | +—————–+——-+ | long_query_time | 10 | +—————–+——-+ 1 row in set (0.00 sec)

为了方便测试,将修改慢查询时间为 5 秒。

mysql set long_query_time=5; Query OK, 0 rows affected (0.02 sec)

依次执行下面两个查询语句。

第一个查询因为查询时间低于 5 秒而不会出现在慢查询日志中:

mysql select count(*) from order2008; +———-+ | count(*) | +———-+ | 208 | +———-+ 1 row in set (0.00 sec)

第二个查询因为查询时间大于 5 秒而应该出现在慢查询日志中:

mysql select count(*) from t_user; +———-+ | count(*) | +———-+ | 6552961 |

查看慢查询日志。

[root@localhost mysql]# more localhost-slow.log # Time: 081026 19:46:34 # User@Host: root[root] @ localhost [] # Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961 select count(*) from t_user;

从上面日志中,可以发现查询时间超过 5 秒的 SQL,而小于 5 秒的则没有出现在此日志中。

如果慢查询日志中记录内容很多,可以使用 mysqldumpslow 工具 (MySQL 客户端安装自带) 来对慢查询日志进行分类汇总。下例中对日志文件 mysql_master-slow.log 进行了分类汇总,只显示汇总后摘要结果:

[root@mysql_master mysql_data]#mysqldumpslow mysql_master-slow.log Reading mysql slow query log from mysql_master-slow.log Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_master select count(N) from t_user;

对于 SQL 文本完全一致,只是变量不同的语句,mysqldumpslow 将会自动视为同一个语句进行统计,变量值用 N 来代替。这个统计结果将大大增加用户阅读慢查询日志的效率,并迅速定位系统的 SQL 瓶颈。

看完上述内容,你们掌握 MySQL 语句如何优化的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1488字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)