MySQL - 如何计算表的插入/更新次数

时间:2016-09-12 21:38:37

标签: mysql

我正在研究一些MySQL性能问题,并希望生成一个报告,说明在一段时间内我的数据库中每个表的插入/更新次数。

我有很多关于服务器性能的数据,例如RDS的磁盘I / O指标。 MySQL的SHOW STATUS命令显示Queries甚至Innodb_data_writes,但这些都在整个服务器级别,而不是粒度。我想详细了解表格级别。

也许我可以打开或使用information_schemaperformance_schema数据库中隐藏的内容?

2 个答案:

答案 0 :(得分:2)

性能模式将表io的统计信息保存在表(甚至索引)粒度上。

见表performance_schema.table_io_waits_summary_by_table

https://dev.mysql.com/doc/refman/5.7/en/table-waits-summary-tables.html#table-io-waits-summary-by-table-table

答案 1 :(得分:1)

感谢barat指出this link,建议通过二进制日志获取相关信息。我编写了一个快速脚本,它使用mysqlbinlog的组合从远程服务器检索二进制日志,并将日志内容的正则表达式解析为以下格式输出所需信息的内容:

Parsed 1,096,063 lines spanning 300 seconds between 2016-09-13 03:05:00 and 2016-09-13 03:10:00
master                         metrics                        update          = 43570
master                         metrics                        insert into     = 9
DEFAULT                        accounts                       update          = 501
DEFAULT                        users                          update          = 5
DEFAULT                        logins                         insert into     = 1
mysql                          rds_heartbeat2                 insert into     = 1

代码在https://github.com/sellerlabs/mysql-writes-per-table

上在Github上共享