MySQL慢查询和日志实例

简单介绍

MySQL慢查询日志是MySQL提供的一种日志记录,用于记录MySQL中响应时间超过指定阈值的语句。慢查询日志可以记录到文件,也可以记录到数据库表中。默认是不开启慢查询日志记录,一般生产环境不建议开启。开启后,会对MySQL的性能有一定影响。

参数说明

这里仅介绍几个常用的:

slow_query_log       是否开启慢日志查询,默认不开启

slow_query_log_file      慢查询日志记录文件的位置

long_query_time   慢查询响应时间阈值,超过此时间值会记录,默认为10,单位为秒。最小可以精确到微妙。调试时,可以把该参数值设置足够小,以便能记录到慢查询日志

操作方法

查看慢查询参数

show variables like 'slow_query%';
show variables like 'long_query_time';

参数设置方法

将 slow_query_log 全局变量设置为“ON”状态

set global slow_query_log='ON';

设置慢查询日志存放的位置

设置查询超过1秒就记录日志

执行一条慢查询SQL语句,查看是否生成慢查询日志

日志格式

慢查询日志被记录后,可以根据slow_query_log_file设置的文件,查看相应日志。

写入日志的每个语句都以 # 字符开头。对于每一组慢SQL,第一行记录的是该条 SQL 执行的时刻(如果 log_timestamps 参数为 UTC ,则该时间会显示 UTC 时区时间),第二行记录的是执行该语句的用户和 IP 以及链接 id ,第三行的几个字段解释如下:

●    Query_time: duration 语句执行时间,以秒为单位。

●    Lock_time: duration 获取锁的时间(以秒为单位)。

●    Rows_sent: 发送给 Client 端的行数。

●    Rows_examined:  服务器层检查的行数(不计算存储引擎内部的任何处理)。

tail -f /var/lib/mysql/test_slow.log

查看当前有多少慢sql查询的情况

show status like "%queries%";

参考资料

序号文章链接
1https://www.jb51.net/article/206447.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于MySQL慢查询优化,有几个常见的方法和技巧可以尝试: 1. 确定慢查询:首先使用MySQL慢查询日志或性能分析工具(如Percona Toolkit)来确定哪些查询较慢。这样可以帮助你了解具体的问题。 2. 优化查询语句:检查慢查询中的SQL语句并进行优化。你可以考虑添加适当的索引以提高查询性能,或者重写复杂的查询语句以简化其逻辑。 3. 优化数据库结构:检查数据库表的设计和结构,确保表中的字段类型、索引和约束等设置是合理的。合理的数据库设计可以提高查询性能。 4. 避免全表扫描:尽量避免在大表上执行全表扫描操作,可以通过添加索引或者改进查询条件来避免全表扫描。 5. 调整系统配置参数:根据数据库负载和硬件性能,调整MySQL的配置参数,如缓冲区大小、连接池大小等,以提高系统性能。 6. 使用缓存:考虑使用缓存技术(如Redis)来缓存常用的查询结果,减轻数据库的压力。 7. 分离读写操作:将读操作和写操作分离到不同的数据库实例或服务器上,可以提高数据库的并发性能。 8. 使用慢查询日志或监控工具:定期分析慢查询日志,或者使用监控工具(如Prometheus和Grafana)来实时监测数据库性能,并及时调整和优化。 这些是一些常见的MySQL慢查询优化方法,具体的优化策略需要根据具体情况进行调整和实施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值