我正在尝试编写一个程序来计算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完成的磁盘写入
答案 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如何计算其输出的相对值,你可以类似地解决问题。