1

我正在运行一个mysql服务器。我想以某种方式确保将整个数据库加载到内存中,因为我听说它会快很多。

这是真的?以及如何验证它?

4

4 回答 4

5

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

如果你想预先缓存数据,你可以做一些常见的查询,或者全表/索引扫描来强制它把所有的数据加载到内存中。

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

请记住,您不想耗尽内存,因此请小心将 innodb_buffer_pool_size 设置得太大。

于 2008-09-27T19:21:42.473 回答
2

好吧,一种选择是使用 ramdrive.. 虽然它不是永久性的。

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

于 2008-09-27T18:53:02.480 回答
0

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

于 2008-09-29T16:02:56.833 回答
0

RAM 中的表非常快。

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

ALTER TABLE 测试引擎 = 内存;

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

于 2010-01-21T18:59:35.023 回答