2010-10-12 80 views
0

在MySQL中,我有时会输入“show innodb status”来查看长时间运行的查询正在做些什么。底部在“行操作”下面有一行:MySQL InnoDB:“读/秒”的单位是什么?

2000.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 2000.00 reads/s 

这些是什么单位?记录? InnoDB页面? OS磁盘页面? (它们是否是同一件事?)

回答

1

这是逻辑行读取*平均在SHOW INNODB STATUS的顶部表示它正在运行报告。

所以它不同于页面部分(其中包含物理页面操作)。

这是一个很好的建模性能指标,因为它可以显示您的应用程序对数据库的一般要求。如果需求不增加,但是性能变差,请查看数据集是否增加等。也许这会导致更多物理IO?

[*]逻辑行读取可能仍然需要读取许多页面,例如,如果必须从撤消中找到较早版本(MVCC)。

+0

谢谢!我想我感兴趣的一点是知道我是否可以用它来确定运行的时间。假设我知道我的程序要插入2,000,000条新记录,而'show innodb status'说'2000.00 inserts/s'(平均) - 这是否表明它需要大约2,000,000/2000 = 1000秒(17分钟)总数?如果它是“逻辑行读”,这表明它是,这是很好的。 – Ken 2010-10-23 01:51:16

+1

我想你可以用它来模拟进度。由于构建唯一索引不能使用插入缓冲区,因此可能存在某些索引页需要执行物理IO的偏差。表格插入到它们变得越大,表格也会变得越慢 - 仅仅因为某些东西已经完成了50%,并不意味着它会持续到目前为止的完成时间。 – 2010-10-24 16:03:09