【发布时间】:2014-11-06 07:01:05
【问题描述】:
最近听说内存数据库的概念。
在任何类型的数据库中,我们最终都将数据存储在计算机中,我们的程序将从那里获取数据。与其他数据库相比,内存数据库操作如何快速。
内存数据库是否会将数据库中的所有数据加载到内存(RAM)中。
提前谢谢....
【问题讨论】:
标签: mysql database performance hsqldb
最近听说内存数据库的概念。
在任何类型的数据库中,我们最终都将数据存储在计算机中,我们的程序将从那里获取数据。与其他数据库相比,内存数据库操作如何快速。
内存数据库是否会将数据库中的所有数据加载到内存(RAM)中。
提前谢谢....
【问题讨论】:
标签: mysql database performance hsqldb
内存数据库(IMDB;也称为主内存数据库系统或 MMDB 或内存驻留数据库)是一种数据库管理系统,主要依靠主内存来存储计算机数据。它与采用磁盘存储机制的数据库管理系统形成对比。主内存数据库比磁盘优化数据库更快,因为内部优化算法更简单并且执行更少的 CPU 指令。访问内存中的数据可消除查询数据时的寻道时间,从而提供比磁盘更快且更可预测的性能。
响应时间至关重要的应用程序,例如运行电信网络设备和移动广告网络的应用程序,通常使用主内存数据库。
在回复您的查询时,是的,它会将数据加载到您计算机的 RAM 中。
磁盘数据库
存储在磁盘上的所有数据,将数据移动到主磁盘所需的磁盘 I/O 需要时记忆。
数据始终保存到磁盘。
传统的数据结构,如 B 树,旨在存储表和 在磁盘上有效地索引。
几乎无限的数据库大小。
支持非常广泛的工作负载,例如 OLTP、数据仓库、 混合工作负载等。
内存数据库
所有数据都存储在主存中,无需进行磁盘I/O查询 或更新数据。
数据是持久的还是易失的,取决于内存数据库 产品。
专用数据结构和索引结构假定数据是 总是在主内存中。
针对特殊工作负载进行了优化;即通讯 行业特定的 HLR/HSS 工作负载。
数据库大小受主存容量限制。
【讨论】:
内存数据库通常将整个数据库放在内存中。 (如 MySQL 数据库引擎内存) 这是一个巨大的性能提升,但是 RAM 很昂贵并且通常不是持久的,因此您会在重新启动时丢失数据。 有一些方法可以减少最后一个问题,例如通过定时快照或磁盘数据库上的复制。 还有一些混合类型,只有一部分 db 在内存中。
【讨论】:
MySQL 产品
MySQL 有几个“引擎”。在所有引擎中,动作都是在 RAM 中执行的。引擎在确保数据“持久”在磁盘上的能力方面存在显着差异。
ENGINE=MEMORY -- 这不是持久的;数据只能在 RAM 中找到。它仅限于某些预设的最大尺寸。断电时,所有数据(在 MEMORY 表中)都会丢失。
ENGINE=MyISAM -- 这是一个旧引擎;它将数据持久化到磁盘,但在电源故障的情况下,有时索引已损坏并需要“修复”。
ENGINE=InnoDB -- 这是首选引擎。它不仅可以持久保存到磁盘,而且即使在断电时也能“保证”一致性。
【讨论】:
MEMORY 不会从磁盘加载。 (用户可以自己这样做。)8.0 的注释指出,在新版本中以特殊方式处理了“内存”的潜在用途。好的,也许提到 MyISAM 和 InnoDB 是离题了。
还有像 Tarantool 这样的内存数据库,可以处理大于可用 RAM 的数据集。 Tarantool 能够使用这些集合,因为它针对快速随机写入进行了优化,这是出现的主要瓶颈。
【讨论】: