2008-09-27 460 views

回答

5

如果你正使用InnoDB,那麼你可以設置innodb_buffer_pool_size到至少與您的數據和索引一樣大。然後,當您訪問數據時,它將被緩存到內存中,隨後的所有訪問都將通過內存進行。

如果您想預先緩存數據,您可以執行一些常見查詢或全表/索引掃描來強制它將所有數據加載到內存中。

有一個mysqld的init-file選項,它可以讓服務器在啓動時自動執行一些命令,其中可以包含執行的預緩存查詢。

請記住,您不想耗盡內存,因此請小心將innodb_buffer_pool_size設置得太大。

2

那麼,一個選擇是使用ramdrive ..雖然它不是永久性的。

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

+0

我實際上正在尋找更多的方法讓mysql將它加載到它自己的ram中 - 儘管這是一個互動的選擇,它需要在啓動時運行。 – Thomaschaaf 2008-09-27 19:13:31

+0

理論上操作系統仍然可能最終使用物理驅動器上的交換文件.. – 2008-09-28 17:27:46

0

(只是爲了完整性)您可以使用HEAP作爲表引擎。但請記住,重新引導服務器時,無論您放入HEAP表中的數據是否消失。

0

RAM中的表非常快。

您可以通過更改其存儲引擎來更改現有表。但是如果你想在重新啓動服務器後使用這些數據,請進行備份。

ALTER TABLE test ENGINE = MEMORY;

請記住,MEMORY表不能包含BLOB或TEXT列,並且數據和索引大小僅限於可用內存。

相關問題