如何计算MySQL完成的磁盘写入总数

时间:2011-09-05 13:47:02

标签: mysql innodb disk

我正在尝试编写一个程序来计算MySQL完成的磁盘写入总数 ..i知道你可以通过“显示全局状态”获取变量  mysql命令..我需要帮助从实际计算任何类型的磁盘写入的变量列表中找出...所以我可以总结计数,我的问题解决了

的MySQL>显示全球状态;

给出以下变量的值

show variables;
etc ...

Innodb_data_writes        
Innodb_data_written       
Innodb_dblwr_pages_written        
Innodb_dblwr_writes       
Key_write_requests        
Key_writes        

我不知道某些变量的含义及其含义但我猜它有点缩小到

Innodb_data_writes - 数据写入总数

Innodb_dblwr_writes - 已执行的双写操作数。

Innodb_log_writes - 对日志文件的物理写入次数

Key_writes - 密钥块到磁盘的物理写入次数

这些是正确的吗?还是有任何其他磁盘写入我想过的mysql?还是有更好的方法来计算我的sql完成的磁盘写入

2 个答案:

答案 0 :(得分:0)

查看Handler_write变量(和其他Handle_*变量)。

答案 1 :(得分:0)

您提到的写入变量是逻辑写入,它们不一定是写入磁盘。此外,您必须考虑在启用时写入二进制日志和中继日志。

另一种衡量方法是Performance_Schema。 sys模式提供了不同类型写入的摘要。这是一个例子:

https://github.com/mysql/mysql-sys#io_global_by_file_by_bytes--xio_global_by_file_by_bytes

我认为这可以解决您的问题。

回到全局状态,您可以将写入的总量除以总fsync计数,以获得每N次写入大小的粗略估计,再次这将是近似的,因为特别是在不同的情况下启用后同步日志文件和binlog / relay日志的设置。

如果您需要测量来自MySQL的所有内容的实际磁盘写入,包括临时表,则必须转到OS层。理想情况下,您应该将MySQL数据分离到其专用卷或分区,以从/ proc / diskstats获取基本检测,而不是与其他进程混淆。看看pt-diskstats如何计算其输出的相对值,你可以类似地解决问题。