MySQL - 如何确定我的表是否存储在RAM中?

时间:2010-03-16 03:06:16

标签: mysql database database-design memory innodb

我正在跑步:

MySQL v5.0.67 
InnoDB engine 
innodb_buffer_pool_size = 70MB 

问题:我可以运行什么命令来确保我的整个50 MB数据库完全存储在RAM中?

2 个答案:

答案 0 :(得分:1)

我很想知道为什么要将整个表存储在内存中。我的猜测是你不是。 对我来说最重要的是,如果您的查询运行良好,并且您是否依赖磁盘访问。如果有可用内存,操作系统也可能会缓存您需要的磁盘块。在这种情况下,即使MySQL可能没有内存,操作系统也会。如果您的查询运行不正常,并且您可以执行此操作,我强烈建议您在RAM中添加更多内存。如果你的速度减慢,你很可能会遇到争用。

show table status

将向您显示一些信息。

如果从

获取服务器IO /缓冲区/缓存统计信息
show server status

然后运行一个需要访问每一行的查询(比如使用未编制索引的列对每行中的非空值求和)并检查是否发生了任何IO。

我怀疑你在内存中缓存了整个东西,虽然只有70MB。你必须从这个总数中取出很多缓存,临时和索引缓冲区。

答案 1 :(得分:0)

如果您运行SELECT COUNT(*) FROM yourtable USE INDEX (PRIMARY),那么InnoDB会将PRIMARY索引的每一页放入缓冲池中(假设其中有足够的空间)。如果该表具有二级索引,并且您也希望将其加载到缓冲池中,则可以设计一个类似的查询,该查询将从二级索引中读取并完成工作。

相关问题