6

我尝试将 Mnesia 与更传统的数据库进行比较。

据我了解,Mnesia 中的表可以位于(请参阅Mnesia 中的内存消耗):

  • ram_copies- 表存储在 中ets,因此没有 ACID 中的持久性。
  • disc_copies- 表位于etsand dets,所以表不能大于可用内存?而如果表是碎片化的,数据库就不能大于可用内存吗?
  • disc_only_copies- 表位于dets,因此内存中没有缓存,性能更差。并且表的大小被限制在表的大小dets或者表必须是碎片化的。

因此,如果我想要从 RAM 读取的性能和写入磁盘的持久性,那么与 MySQL 或 PostgreSQL 等传统 RDBMS 相比,表的大小非常有限。

我知道 Mnesia 并不是要取代传统的 RDBMS:s,但它可以用作大型 RDBMS 还是我必须寻找另一个数据库?

我将使用的服务器是一个内存有限的 VPS,大约512MB,但我想要良好的数据库性能。

disc_copies正如我所理解的那样,Mnesia 中的其他类型的表格是否如此有限?数据库不能部分在内存上,完整的副本在磁盘上吗?

4

1 回答 1

2

Mnesia 数据库对不同类型表的存储容量已在之前的 SO 问题中讨论过:

Mnesia 数据库的存储容量是多少?

已经有一个很好的答案。

显然(但我猜你已经看过了)官方文档可在以下位置获得:

http://www.erlang.org/doc/man/mnesia.html

此外,阅读Mnesia 常见问题解答

11.5 Mnesia可以存储多少数据?

Dets 使用 32 位整数作为文件偏移量,因此最大可能的 mnesia 表(目前)是 4Gb。

实际上,在达到此限制之前,您的机器会慢到爬行。

最后,Mnesia 表可以是碎片化的。这是在这里那里讨论的。

这些是我的 2p。

于 2010-04-08T09:28:31.283 回答