高性能MySql系列-查询性能优化

前言

查询优化、索引优化、库表结构优化需要齐头并进,一个不落。

最佳实践

是否在检索大量的数据行

大多数的慢查询都是因为检索了大量的数据行导致的。

每次看到select * 时都应该有怀疑审视的目光

1.不必要的列可能导致过多的IO/CPU/内存消耗。
2.无法使用覆盖索引提升性能。

不要重复执行相同的查询

例如用户头像URL,应当在首次查询后缓存起来。

检查3个指标

  • 响应时间
  • 扫描的行数
  • 返回的行数

响应时间 = 服务时间 + 排队时间。
服务时间是指数据库处理查询时真正花了多少时间,排队时间是指服务器因为等待某个资源而没能真正执行查询的时间,如等待IO完成,等待行锁等。
高性能MySql系列-查询性能优化_第1张图片
高性能MySql系列-查询性能优化_第2张图片

选择一个复杂查询还是多个简单查询

image.png
高性能MySql系列-查询性能优化_第3张图片
高性能MySql系列-查询性能优化_第4张图片

切分查询

删除旧数据就是一个很好的例子。
高性能MySql系列-查询性能优化_第5张图片
有时候,将多个join查询拆分成多次单表查询更有效。
高性能MySql系列-查询性能优化_第6张图片

理解查询背后的工作原理

高性能MySql系列-查询性能优化_第7张图片

高性能MySql系列-查询性能优化_第8张图片

高性能MySql系列-查询性能优化_第9张图片

image.png

你可能感兴趣的:(mysql)