MySQL数据库在内存中运行,以加快查询的执行速度

时间:2017-02-22 11:41:55

标签: mysql database memory

是否可以将整个mysql数据库存储在内存中。我应该创建特殊查询吗?我要运行什么样的查询?我想加快从特定表中插入,更新和删除操作的速度,现在我觉得这是唯一可行的方法。

2 个答案:

答案 0 :(得分:1)

您可以创建一个使用MEMORY引擎的表格。 在服务启动时,您将该表填充到磁盘上存在的另一个表中,并以某些间隔将其同步回磁盘上存在的表。 INSERT INTO ... SELECT * FROM ...

注意:请注意,当服务器或mysql服务停止时,表中存储的所有数据都将丢失!

有关MEMORY引擎的更多信息,请访问https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html

答案 1 :(得分:0)

这应该是一个评论 - 但它有点长。

你想通过这个实现什么目标?

结果会出现2个问题:在重启(或重启mysql)后需要重新填充数据,并且会受到tmp_table_size和max_heap_table_size的限制。

如果您只想加快原始数据访问速度,那么Innodb会尽可能多地将数据缓存到内存中。 MyISAM将缓存索引在内存中(在Linux系统和类似的情况下,表数据被缓存 - 但不是无限期)。但是,如果遇到性能问题,首先要考虑的是针对数据库运行的查询。

如果您故意希望数据在备份中或重新启动后不可用,请将数据文件保存在加密文件系统上(在安装时输入密钥)。