我如何确定整个MySQL数据库都已加载到内存中?
时间:2020-03-06 14:49:44 来源:igfitidea点击:
我正在运行mysql服务器。我想以某种方式确保将整个数据库加载到ram中,因为我听说这样做会更快。
这是真的?以及如何对其进行验证?
解决方案
好吧,一种选择是使用ramdrive ..虽然它不是永久性的。
http://www.linuxforums.org/forum/misc/670-how-create-ram-drive-linux.html
如果我们使用的是InnoDB,则可以将innodb_buffer_pool_size设置为至少与数据和索引一样大。然后,当我们访问数据时,它将被缓存到内存中,并且所有后续访问都将通过内存进行。
如果要预缓存数据,则可以执行一些常见查询或者对表/索引进行全扫描,以强制将所有数据加载到内存中。
mysqld有一个init-file选项,可以使服务器在启动时自动执行一些命令,我们可以在其中包含要执行的预缓存查询。
请记住,我们不想耗尽内存,因此将innodb_buffer_pool_size设置得太大要小心。
(仅出于完整性考虑),我们可以将HEAP用作表引擎。但是请记住,重新启动服务器后,放在HEAP表中的所有数据都将消失。
RAM中的表非常快。
我们可以通过更改现有表的存储引擎来更改它们。但是,如果要在服务器重新启动后使用数据,请进行备份。
ALTER TABLE test ENGINE = MEMORY;
请记住,MEMORY表不能包含BLOB或者TEXT列,并且数据和索引大小仅限于可用内存。