一尘不染

您如何针对繁重的 InnoDB 工作负载调整 MySQL?

mysql

假设有一个以 InnoDB 表为主的生产 OLTP 系统

  • 系统失调/配置错误的常见症状是什么?
  • 您最常从默认值更改哪些配置参数?
  • 您如何在出现问题之前发现潜在的瓶颈?
  • 您如何识别和解决活动问题?

任何详细说明特定变量和诊断的轶事status将不胜感激。


阅读 72

收藏
2022-10-18

共1个答案

一尘不染

我学到了一些关于 MySQL 的惊人的东西。如果您分配的单个单体 InnoDB 缓冲池大于Total Installed Divided By Number of Physical CPUs,则由于 InnoDB 缓冲池已满,您将促使操作系统定期进行内存交换。MySQL 5.5 的选项称为innodb_buffer_pool_instances可用于拆分缓冲池。昨天,我为我去年在回答中提到的客户正确实施了这一点。我仍然有 162GB 用于客户端的缓冲池。我已将服务器的 innodb_buffer_pool_instances 选项设置为 2,因为每个数据库服务器都是双六核。

numactl --hardware

我看到 192GB 的服务器 RAM 映射为 96GB 到每个物理内核。因此,我将 innodb_buffer_pool_instances 设置为 2。现在情况看起来不错。我将更新我的答案,看看这如何影响接下来 2 个月的内存交换。

2022-10-18