我怎样才能确定整个MySQL数据库是否已加载到内存中?

时间:2008-09-27 18:40:31

标签: mysql innodb

我正在运行一个mysql服务器。我想以某种方式确保将整个DB加载到ram中,因为我听说它会更快。

这是真的吗?以及如何将其翻转?

4 个答案:

答案 0 :(得分:5)

如果您使用的是InnoDB,那么您可以将innodb_buffer_pool_size设置为至少与数据和索引一样大。然后,当您访问数据时,它将被缓存到内存中,所有后续访问都将通过内存进行。

如果您想预先缓存数据,可以执行一些常见查询或全表/索引扫描,以强制它将所有数据加载到内存中。

mysqld有一个init-file选项,它可以让服务器在启动时自动执行一些命令,你可以在其中包含要执行的预缓存查询。

请记住,您不希望内存不足,因此请小心设置innodb_buffer_pool_size太大。

答案 1 :(得分:2)

嗯,一个选择是使用ramdrive ..虽然它不是永久性的。

http://www.linuxforums.org/forum/misc/670-how-create-ram-drive-linux.html

答案 2 :(得分:0)

(仅为了完整性),您可以使用HEAP作为表引擎。但请记住,当您重新启动服务器时,放在HEAP表中的任何数据都会消失。

答案 3 :(得分:0)

RAM中的表格非常快。

您可以通过更改其存储引擎来更改现有表。但是,如果要在服务器重新启动后使用数据,请进行备份。

ALTER TABLE test ENGINE = MEMORY;

请记住,MEMORY表不能包含BLOB或TEXT列,数据和索引大小仅限于可用内存。