大表的另一种优化思路

kyaa111 5月前 ⋅ 609 阅读

最近在跟进服务迁移到华为云的工作, 发现mysql性能下降非常明显

例:

某大表SELECT COUNT(1)

原先只要60s, 而华为云需要112s之多, 从纸面配置看, 两者没有什么明显区别.

但后续在跟华为云技术多次沟通, 多次调整后, 确定了性能下降的原因

有三个方面

  1. 物理配置
    1. 内存
    2. cpu
    3. 磁盘性能
  2. 参数设置
    1. innodb_buffer_pool_instances 在非常高的 I/O 负载时, 优化效果明显
    2. innodb_buffer_pool_size
    3. innodb_parallel_read_threads 并行查询, 对大表的查询优化非常明显
    4. innodb_io_capacity
    5. innodb_io_capacity_max
  3. mysql版本
    1. 云厂商一般都会对mysql做进一步优化, 比如腾讯云的并行查询, https://cloud.tencent.com/developer/article/2216333 , 华为云目前直接使用的社区版

相关:

还有优化索引/字段/查询语句等软层面的手段, 不在此次讨论范围内