内存数据库和磁盘内存数据库之间的区别

时间:2014-09-12 06:58:30

标签: mysql database performance hsqldb

最近我听说过内存数据库的概念。

在任何类型的数据库中,我们最终将数据存储在计算机中,从那里我们的程序将获取数据。与其他数据库相比,内存数据库操作如何快速。

内存数据库是否会将数据库中的所有数据加载到内存(RAM)中。

提前致谢....

4 个答案:

答案 0 :(得分:21)

内存数据库(IMDB;也是主内存数据库系统或MMDB或内存驻留数据库)是一种主要依赖主内存进行计算机数据存储的数据库管理系统。它与采用磁盘存储机制的数据库管理系统形成对比。主内存数据库比磁盘优化数据库更快,因为内部优化算法更简单并且执行更少的CPU指令。访问内存中的数据可以消除查询数据时的查找时间,从而提供比磁盘更快,更可预测的性能。

响应时间至关重要的应用程序(例如运行电信网络设备和移动广告网络的应用程序)通常使用主存储器数据库。

在回复您的查询时,是的,它会将数据加载到您计算机的RAM中。

磁盘数据库

  • 存储在磁盘上的所有数据,将数据移动到主磁盘所需的磁盘I / O. 需要时记忆。

  • 数据始终保留在磁盘上。

  • 传统的数据结构,如B-Trees,用于存储表格和 索引在磁盘上有效。

  • 几乎无限制的数据库大小。

  • 支持非常广泛的工作负载,即OLTP,数据仓库, 混合工作量等。

内存数据库

  • 所有数据都存储在主内存中,无需执行磁盘I / O查询 或更新数据。

  • 数据是持久性的或易变的,具体取决于内存数据库 产品

  • 专门的数据结构和索引结构假定数据是 永远在主记忆中。

  • 针对专业工作负载进行了优化;即通讯 行业特定的HLR / HSS工作量。

  • 数据库大小受主内存量的限制。

答案 1 :(得分:6)

MySQL产品

MySQL有几个“引擎”。在所有引擎中,操作都在RAM中执行。发动机在确保数据“保持”在磁盘上的效果方面存在显着差异。

ENGINE = MEMORY - 这是持久性;数据仅在RAM中找到。它仅限于某些预设的最大尺寸。电源故障时,所有数据(在MEMORY表中)都将丢失。

ENGINE = MyISAM - 这是一个旧引擎;它将数据保存到磁盘,但在电源故障的情况下,有时索引已损坏并需要“修复”。

ENGINE = InnoDB - 这是首选引擎。它不仅可以存留在磁盘上,而且即使在电源故障时也能保证一致性。

答案 2 :(得分:2)

内存中的db通常在内存中包含整个数据库。 (比如MySQL DB Engine MEMORY) 这是一个巨大的性能提升,但RAM很昂贵,而且往往不是持久的,所以你会在重启时丢失数据。 有一些方法可以减少最后一个问题,例如:通过定时快照或磁盘数据库上的复制。 还有一些混合类型,内存中只有一部分数据库。

答案 3 :(得分:0)

还有像Tarantool这样的内存数据库可以处理大于可用RAM的数据集。 Tarantool能够使用这些集合,因为它针对快速随机写入进行了优化,这是出现的主要瓶颈。