有什么方法可以强制MySQL在RAM中存储特定的表(除了使用内存存储引擎)?
我的数据库在InnoDB表中包含+200 GB(我不想存储在RAM中)和使用MyISAM引擎的10个表(~100 MB)。
我的目标是尽可能快地访问MyISAM表(如果需要,我可以更改MyISAM表的存储引擎或将它们移动到同一服务器上的另一个数据库)。
我的db-server正在运行Linux并且有10 GB RAM。
答案 0 :(得分:2)
假设如下:
memorydb
您可以执行以下操作:
service mysql stop
mkdir /var/lib/mysql/memorydb
chown mysql:mysql /var/lib/mysql/memorydb
/var/lib/mysql/memorydb
service mysql start
mysql> ALTER TABLE mydb.t1 RENAME memorydb.t1;
mysql> ALTER TABLE mydb.t2 RENAME memorydb.t2;
mysql> ALTER TABLE mydb.t3 RENAME memorydb.t3;
在步骤6之后,memorydb
应该在information_schema.schemata
如果要将表的副本保留在mydb中,请在步骤6之后执行以下操作
mysql> CREATE TABLE memorydb.t1 LIKE mydb.t1;
mysql> INSERT INTO memorydb.t1 SELECT * FROM mydb.t1;
mysql> CREATE TABLE memorydb.t2 LIKE mydb.t2;
mysql> INSERT INTO memorydb.t2 SELECT * FROM mydb.t2;
mysql> CREATE TABLE memorydb.t3 LIKE mydb.t3;
mysql> INSERT INTO memorydb.t3 SELECT * FROM mydb.t3;
确保您有足够的RAM来存放MyISAM表。
试一试!!!