2012-01-05 72 views
3

有什麼辦法可以強制MySQL在RAM中存儲特定的表(除了使用內存存儲引擎)?將內存分配給MySQL數據庫中的特定表

我的數據庫在InnoDB表(我不希望存儲在RAM中)和10個使用MyISAM引擎的表(〜100 MB)中包含+ 200 GB。

我的目標是獲得儘可能最快的存取權限的MyISAM表(如果需要的話我可以改變MyISAM表的存儲引擎或將其移動到另一個數據庫在同一臺服務器上)。

我的數據庫服務器正在運行Linux並具有10 GB RAM。

+0

[將MySQL innodb數據庫加載到內存中]的可能的重複(http://stackoverflow.com/questions/2486092/load-a-mysql-innodb-database-into-memory) – 2012-01-05 21:00:36

回答

2

假設如下:

  • DATADIR是/ var/lib中/ MySQL的
  • 你的數據庫稱爲MYDB
  • 你MyISAM表T1,T2和T3 MYDB
  • 你想創建一個名爲memorydb的內存數據庫

您可能有以下幾種:

  • 步驟01)service mysql stop
  • 步驟02)創建RAM磁盤
  • 步驟03)mkdir /var/lib/mysql/memorydb
  • 步驟04)chown mysql:mysql /var/lib/mysql/memorydb
  • 步驟05)的RAM磁盤安裝到/var/lib/mysql/memorydb
  • 步驟06 )service mysql start
  • 步驟07)mysql> ALTER TABLE mydb.t1 RENAME memorydb.t1;
  • 步驟08)mysql> ALTER TABLE mydb.t2 RENAME memorydb.t2;
  • 步驟09)mysql> ALTER TABLE mydb.t3 RENAME memorydb.t3;

第6步之後,memorydb應在INFORMATION_SCHEMA.SCHEMATA

註冊。如果你想保持表的副本早在MYDB,之後做以下步驟6

  • 步驟07)mysql> CREATE TABLE memorydb.t1 LIKE mydb.t1;
  • 步驟08)mysql> INSERT INTO memorydb.t1 SELECT * FROM mydb.t1;
  • 步驟09)mysql> CREATE TABLE memorydb.t2 LIKE mydb.t2;
  • 步驟10)mysql> INSERT INTO memorydb.t2 SELECT * FROM mydb.t2;
  • 步驟11)mysql> CREATE TABLE memorydb.t3 LIKE mydb.t3;
  • 步驟12)mysql> INSERT INTO memorydb.t3 SELECT * FROM mydb.t3;

只要確保你有足夠的內存來保存你的MyISAM表。

試試吧!

相關問題