内存数据库的存储容量是否仅限于RAM的大小?如果是,除了增加RAM大小之外,是否有任何方法可以增加其容量。如果不是,请给出一些解释。
答案 0 :(得分:1)
如前所述,内存存储容量受可寻址内存的限制,而不受系统中物理内存量的限制。 Simon也是正确的,OS会将内存交换到页面文件,但你真的想要避免这种情况。在DBMS的上下文中,操作系统将比使用具有与物理内存一样大的缓存的持久数据库更糟糕的工作。 IOW,DBMS将比操作系统管理包含内存数据库内容的分页内存更智能地管理其缓存。
答案 1 :(得分:0)
在32位系统上,每个进程限制为总共3GB的RAM,无论你有3GB物理还是512MB。如果您有更多数据(包括内存数据库)和代码然后适合物理RAM,则光盘上的页面文件用于交换当前未使用的内存。交换确实减慢了一切。您可以使用一些技巧来扩展它:内存映射文件,/ 3GB开关;但这些并不容易实现。
在64位计算机上,进程内存限制很大 - 我忘了它是什么,但它在TB范围内。
答案 2 :(得分:0)
VoltDB是一个内存中的SQL数据库,可在64位Linux服务器的集群上运行。它具有高性能耐久性,可用于恢复,但表,索引和物化视图存储在内存中100%。 VoltDB群集可以动态扩展,以增加整体可用RAM和吞吐量容量,而无需任何停机时间。在高可用性配置中,还可以停止各个节点以执行维护,例如增加服务器的RAM,然后在没有任何停机时间的情况下重新加入群集。
由Michael Stonebraker领导的VoltDB的设计是对OLTP事务处理工作负载的性能和可扩展性的一种不妥协的方法,具有完整的ACID保证。今天,这些工作负载通常被描述为快速数据。通过使用主内存和分布式内核进行并行处理的单线程SQL执行代码,可以尽可能快地访问数据,以最大限度地缩短事务的执行时间。
答案 3 :(得分:0)
内存中的解决方案可以处理大于RAM的数据集。当然,这是通过在磁盘上添加一些操作来实现的。例如,Tarantool的 Vinyl 可以处理可用RAM大小的10到1000倍的数据集。最近年代的Like其他数据库,如RocksDB和Bigtable, Vinyl的写算法使用LSM树而不是B树,这有助于提高速度。