如何精准定位导致数据库缓慢运行的SQL语句?
- 内容介绍
- 相关推荐
本文共计1740个文字,预计阅读时间需要7分钟。
一、慢SQL定位与监控主要途径:慢查询日志和服务监控。
1.1 慢SQL日志
开启MySQL的慢查询日志,并通过工具如mysqldumpslow分析对应的慢查询日志。一、慢SQL如何定位
慢SQL的监控主要通过两个途径:慢查询日志和服务监控。
1.1 慢SQL日志
开启MySQL的慢查询日志,再通过一些工具比如mysqldumpslow取分析对应的慢查询日志,现在一般的云厂商都提供了可视化的平台。
1.2 服务监控
可以再业务的基建中加入对慢SQL的监控,常见的方案有字节码插桩、连接池扩展、ORM框架过程,对服务运行中的慢SQL进行监控和警告。
二、有哪些方式优化慢SQL
优化慢SQL主要从两个方面考虑:SQL语句优化和数据库设计优化。
2.1避免不必要的列
SQL查询时应该只查询需要的列,而不要包含额外的列,例如像select *这样的写法应该尽量避免。
2.2分页优化
再数据量比较大、分页比较深的情况下,需要考虑分页优化。
例如:
select * from table where type = 2 and level = 9 order by id
asc limit 190289,10;
优化方案:
2.2.1优化方案:延迟关联
先通过where条件提取出主键,再将该表与原数据表关联,通过主键id提取数据行,而不是通过原来的二级索引提取数据行。
本文共计1740个文字,预计阅读时间需要7分钟。
一、慢SQL定位与监控主要途径:慢查询日志和服务监控。
1.1 慢SQL日志
开启MySQL的慢查询日志,并通过工具如mysqldumpslow分析对应的慢查询日志。一、慢SQL如何定位
慢SQL的监控主要通过两个途径:慢查询日志和服务监控。
1.1 慢SQL日志
开启MySQL的慢查询日志,再通过一些工具比如mysqldumpslow取分析对应的慢查询日志,现在一般的云厂商都提供了可视化的平台。
1.2 服务监控
可以再业务的基建中加入对慢SQL的监控,常见的方案有字节码插桩、连接池扩展、ORM框架过程,对服务运行中的慢SQL进行监控和警告。
二、有哪些方式优化慢SQL
优化慢SQL主要从两个方面考虑:SQL语句优化和数据库设计优化。
2.1避免不必要的列
SQL查询时应该只查询需要的列,而不要包含额外的列,例如像select *这样的写法应该尽量避免。
2.2分页优化
再数据量比较大、分页比较深的情况下,需要考虑分页优化。
例如:
select * from table where type = 2 and level = 9 order by id
asc limit 190289,10;
优化方案:
2.2.1优化方案:延迟关联
先通过where条件提取出主键,再将该表与原数据表关联,通过主键id提取数据行,而不是通过原来的二级索引提取数据行。

