- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试将 Mnesia 与更传统的数据库进行比较。
据我了解,Mnesia 中的表可以位于(参见 Memory consumption in Mnesia ):
ram_copies
- 表存储在 ets
中,因此没有 ACID 那样的持久性。disc_copies
- 表位于 ets
和 dets
,因此表不能大于可用内存?如果表有碎片,数据库不能大于可用内存?disc_only_copies
- 表位于 dets
,因此内存中没有缓存并且性能较差。并且表的大小仅限于dets
的大小,否则表必须分片。因此,如果我想要从 RAM 读取的性能和写入光盘的持久性,那么与 MySQL 或 PostgreSQL 等传统 RDBMS 相比,表的大小非常有限。
我知道 Mnesia 并不是要取代传统的 RDBMS,但它可以用作大型 RDBMS 还是我必须寻找另一个数据库?
我将使用的服务器是内存量有限的 VPS,大约 512MB,但我想要良好的数据库性能。
Mnesia 中的 disc_copies
和其他类型的表格是否如我所理解的那样受到限制?数据库不能部分存储在内存中,完整副本存储在光盘上吗?
最佳答案
Mnesia 数据库对于不同类型表的存储容量已在之前的 SO 问题中讨论过:
What is the storage capacity of a Mnesia database?
已经有一个很好的答案了。
显然(但我想你已经看过了)官方文档位于:
http://www.erlang.org/doc/man/mnesia.html
另外,阅读 Mnesia FAQ :
11.5 How much data can be stored in Mnesia?
Dets uses 32 bit integers for file offsets, so the largest possible mnesia table (for now) is 4Gb.
In practice your machine will slow to a crawl way before you reach this limit.
最后,Mnesia 表可以碎片化。这是讨论的here和 there .
这是我的 2p。
关于erlang - Mnesia 的 table 位于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596338/
我已经阅读并重新阅读了文档 re: mnesia:activity/3、mnesia:activity/4 和 mnesia/transaction/2,但它们对我来说仍然像是一种晦涩难懂的外语。 在
似乎我们只能通过输入 iex --erl "--mnesia dir '~/doc/'"--name mynode 来启动 Mnesia。 我们可以直接启动它而不向 erl 传递参数吗? 最佳答案 您
我开始构建一个具有以下要求的项目: 整个系统将分布在 WAN 上的多个物理节点 每个节点将使用和操作一组通用的数据记录 对这些记录的操作必须能够适应网络中断 我正在考虑使用 Mnesia/Erlang
是否有将 mnesia 数据库放在 erlang 中的标准位置?目前我把它放在 priv 目录中。 最佳答案 默认情况下,Mnesia 将在名为 Mnesia. 的子目录中创建模式。模拟器进程的当前目
我定义了一个名为 log 的记录.我想创建一个名称为 log_table 的 mnesia 表.当我尝试将记录写入表时,我得到 bad_type错误如下: (node1@kitt)4> mnesia:
setup_mnesia(Name) -> ?VALUE(application:start(mnesia)), ?VALUE(mnesia:create_schema([node()
我试图有一个函数来确保我需要的表已经创建,如果没有创建它。这是示例: ensure_table_exists(Table, MnesiaTables, Nodes) -> case lists:mem
当我收到这样的消息时,像这样: ** WARNING ** Mnesia is overloaded: {dump_log, write_threshold} 什么是已知的方法 哪个表是否被密集使用?
我有一个带有整数键(时间戳)的表,其中包含应从数据库中删除特定记录的时间。还有一个清理查询,它从该表中获取过期时间小于现在的记录并将其删除。 Erlang 文档说,有四种类型的表类型:set、orde
我有一个带有整数键(时间戳)的表,其中包含应从数据库中删除特定记录的时间。还有一个清理查询,它从该表中获取过期时间小于现在的记录并将其删除。 Erlang 文档说,有四种类型的表类型:set、orde
我为表创建了索引,但有一个问题。 mnesia:select 是否使用二级索引? 最佳答案 来自 http://www.erlang.org/doc/efficiency_guide/tablesDa
我正在使用 rebar3 生成一个版本,但我如何在生产中初始化 mnesia? 如果我编写执行 mnesia:create_schema([node()]) 的“安装”脚本 - 它将使用与发布版本完全
问题: 如何从表中有效地选择记录,其中选择基于涉及两个索引列的条件。 例子 我有记录, #rec{key, value, type, last_update, other_stuff} 我有键(默认)
我正在开发一个需要大量数据库写入的 Erlang 应用程序。除了主键之外,我的模式还有另一个强制执行唯一约束的属性。 假设我有一个 ID、一个 unique_constraint_field 和一些其
问题陈述 我有一个 mnesia 备份文件,想从中提取值。有 3 个表(为简单起见),Employee、Skills 和 attendance。因此 mnesia 备份文件包含这三个表中的所有数据。
Mnesia 使用什么策略来定义哪些节点将存储特定表的副本? 我可以强制 Mnesia 为每个表使用特定数量的副本吗?这个数字可以动态改变吗? 是否有任何来源(除了源代码)对 Mnesia 内部算法的
我在很多文档中看到 Mnesia 已经被 Ericsson 开源了,但是直接谷歌搜索并没有帮助我找到带有代码的存储库...... Mnesia 仍然是开源的吗? 最佳答案 它是 Erlang/OTP
Mnesia 中是否有与此 SQL 语句等效的语句? alter table TABLE add foreign key (FIELD) references TABLE2 (FIELD2) 最佳答案
我有一个 erlang 应用程序,目前在四个节点上运行,并带有一个复制的 mnesia 数据库,该数据库存储有关连接客户端的最少数据。 mnesia 复制过去一直在无缝工作(据我所知),但最近一位客户
我在节点上安装了 mnesia a . 我已经定义了一个架构和一个表。 现在我不知道如何添加另一个节点 b以便 mnesia 现在可以分布式运行。 分布式我的意思是: 发出 insert来自节点 a
我是一名优秀的程序员,十分优秀!