数据库服务器磁盘 I/O 利用率

数据库服务器磁盘 I/O 利用率

我有一台 Linux 服务器,用来运行我的应用程序 (MySql) 的数据库,该服务器有 8GB Ram 和 4 个核心。除了 MySql 之外,服务器上没有运行其他应用程序。

大多数时候服务器磁盘 I/O 利用率约为 90-100%。

以下是一些额外的信息:

Uptime: 2387312  Threads: 29  Questions: 344977869  Slow queries: 3380301  Opens: 200483225  Flush tables: 1  Open tables: 9  Queries per second avg: 144.504

数据库大小约为 70GB,如果我必须定义查询类型,我会说 60% 是简单查询,其余的则更为复杂(连接几个表等)

我正在使用 New Relic 获取 I/O 利用率,根据 Linode(服务器托管的地方),服务器上的平均 I/O 为:IO 速率为每秒 10780 块

这是正常的吗?

答案1

“慢查询”的数量有点高。磁盘负载似乎也表明全表扫描。我的感觉是您的数据库缺少一些常用查询的索引。仔细查看查询 - 它们是来自索引表的选择值吗?

答案2

纯粹猜测:也许您的服务器正在生成大量临时表到磁盘?SHOW GLOBAL STATUS LIKE '%tmp%';与 tmp 表相比,是否返回大量创建的磁盘表?

如果是这样,请分析查询和/或考虑提高tmp_table_size值(如果您的服务器在内存方面有足够的空间)。

答案3

大多数情况下,服务器磁盘 I/O 利用率约为 90-100%

那么你的服务器就是 I/O 受限的。

通常的解决方案是增加更多的磁盘 I/O 容量(=主轴)。

相关内容