Database 内存数据库的存储容量?

Database 内存数据库的存储容量?,database,in-memory-database,Database,In Memory Database,内存数据库的存储容量是否受限于RAM的大小?如果是,除了增加RAM大小外,是否有其他方法可以增加其容量。如果没有,请给出一些解释。在32位系统上,每个进程的总内存限制为3GB,无论您的物理内存是3GB还是512MB。如果您有更多的数据(包括内存数据库中的数据)和代码,则可以将其放入物理RAM中,然后使用光盘上的页面文件交换当前未使用的内存。不过,交换确实会减慢速度。有一些技巧可以用来扩展它:内存映射文件,/3GB开关;但这些都不容易实现 在64位机器上,进程内存限制非常大—我忘了它是什么,但它在

内存数据库的存储容量是否受限于RAM的大小?如果是,除了增加RAM大小外,是否有其他方法可以增加其容量。如果没有,请给出一些解释。

在32位系统上,每个进程的总内存限制为3GB,无论您的物理内存是3GB还是512MB。如果您有更多的数据(包括内存数据库中的数据)和代码,则可以将其放入物理RAM中,然后使用光盘上的页面文件交换当前未使用的内存。不过,交换确实会减慢速度。有一些技巧可以用来扩展它:内存映射文件,/3GB开关;但这些都不容易实现


在64位机器上,进程内存限制非常大—我忘了它是什么,但它在TB范围内。

VoltDB是一个内存内SQL数据库,运行在64位Linux服务器集群上。出于恢复目的,它对磁盘具有高性能耐久性,但表、索引和物化视图100%存储在内存中。VoltDB集群可以动态扩展,以增加总体可用RAM和吞吐量,而无需任何停机时间。在高可用性配置中,还可以停止单个节点以执行维护,例如增加服务器的RAM,然后在没有任何停机时间的情况下重新加入集群


由Michael Stonebraker领导的VoltDB的设计是为了在充分保证ACID的情况下,采用一种不折不扣的方法来实现OLTP事务处理工作负载的性能和可伸缩性。今天,这些工作负载通常被描述为快速数据。通过使用主存和单线程SQL执行代码(通过内核进行并行处理),可以尽可能快地访问数据,以减少事务的执行时间。

如前所述,内存中的存储容量受到可寻址内存的限制,而不是系统中的物理内存量。Simon说操作系统会将内存交换到页面文件也是正确的,但您确实希望避免这种情况。在DBMS的上下文中,操作系统的性能要比简单地使用一个持久性数据库时差得多,而持久性数据库的缓存大小与要支持的物理内存相同。这样,DBMS将比操作系统管理包含内存中数据库内容的分页内存更智能地管理其缓存。

内存中的解决方案可以处理比RAM大的数据集。当然,这是通过在磁盘上添加一些操作来实现的。例如,Tarantool的乙烯基可以处理10到1000倍于可用RAM大小的数据集。最近的其他数据库,如RocksDB和Bigtable,乙烯基的写入算法使用LSM树而不是B树,这有助于提高其速度。

那么,它还可以存储在哪里?