【问题标题】:MySQL database running in memory for speed up the execution of QueriesMySQL 数据库在内存中运行以加快查询的执行速度
【发布时间】:2017-02-22 11:41:54
【问题描述】:

是否可以将整个 mysql 数据库存储在内存中。我应该创建特殊查询来做到这一点吗?我必须运行什么样的查询?我想加快特定表中的插入、更新和删除操作,我认为这是目前唯一可能的方法。

【问题讨论】:

  • 阅读此文档以加快查询执行速度link
  • 你的意思是有这么多内存,服务器可以把所有东西都保存在那里,只需要使用磁盘来转储更改?或者有一个可以在关闭时删除的临时快速数据库?

标签: mysql database memory


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    你想通过这个实现什么?

    您将因此遇到 2 个问题:数据将需要在电源循环(或 mysql 重新启动)后重新填充,并且会受到 tmp_table_size 和 max_heap_table_size 的限制。

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2022-09-28
      • 1970-01-01
      • 2019-11-30
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多