如果我理解正确,MySQL InnoDB 引擎中的二级索引叶节点保存表主键值(至少对于唯一索引)。
因此,在二级索引中查找一个值会导致两个 BTREE 查找:一个用于二级索引,另一个用于聚集索引(聚集在主键上)。这也意味着主键大小会影响所有二级索引的大小。
这也是 MongoDB WiredTiger 二级索引的工作方式吗?或者 MongoDB 二级索引是否存储对文档所在物理块的引用?(我相信这就是 Postgres 处理索引的方式)
如果我理解正确,MySQL InnoDB 引擎中的二级索引叶节点保存表主键值(至少对于唯一索引)。
因此,在二级索引中查找一个值会导致两个 BTREE 查找:一个用于二级索引,另一个用于聚集索引(聚集在主键上)。这也意味着主键大小会影响所有二级索引的大小。
这也是 MongoDB WiredTiger 二级索引的工作方式吗?或者 MongoDB 二级索引是否存储对文档所在物理块的引用?(我相信这就是 Postgres 处理索引的方式)
所以,我在测试中遇到了一个问题(不幸的是没有答案),这让我很怀疑它是真是假。
问题是这样的:“默认情况下,WiredTiger 存储引擎为每个集合和每个索引创建一个文件”。
我去检查了所有的文档,但我找不到这个问题的真正令人满意的答案。我会根据逻辑假设它当然会为每个集合创建一个文件,每个索引创建一个文件,但是如何确定呢?我认为这些文件由数据库系统管理,因此对用户不可见。
我只记得某处有数据库文件看起来像 dbname.0,当它在某个阈值后增长时,它会创建另一个文件 dbname.1 等。所以我假设集合在该文件中而不是一个单独的实体,从而使测试语句错误?
db.collection.stats()
返回
wiredTiger: {
.....
"transaction" : {
"update conflicts" : NumberInt(1410)
},
....
}
它是 MongoDB 3.6,但我不使用它与客户端会话和可重试写入相关的新功能。
找不到很多关于数字含义的文档,除了
并发操作之间的冲突。
由于与并发操作冲突而无法完成操作时会生成此错误。该操作可以重试;如果事务正在进行,则应回滚并在新事务中重试该操作。
在http://source.wiredtiger.com/3.0.0/group__wt.html#ga5ee3c6fcd074e11efd118f3e68e91db8
这是否意味着自创建集合以来有 1410 次失败更新,或者其中一些已成功“重试”隐式?
我们有一个由 3 个 Mongo 3.2.13 实例组成的集群,在启用日志的情况下运行,有数百个数据库和集合可以同时访问。
我们正在检查禁用日志的选项,以提高集群的性能。根据文档,WiredTiger 每 60 秒执行一次检查点,因此在崩溃的情况下,我们最多只能丢失 60 秒的数据。我们对此表示同意。
禁用日记功能还有其他风险/缺点吗?
根据 MongoDB 文档(至少这个博客条目https://www.mongodb.com/blog/post/new-compression-options-mongodb-30),前缀压缩在 MongoDB 上默认启用。
然而,当我查看一个集合时,我看到了这个:
db.myCollection.stats()
{
...,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
"creationString" : "...,prefix_compression=0,prefix_compression_min=4"
...
}
是否prefix_compression=0
意味着我的索引不是前缀压缩的?
我不能wiredTiger
用作MongoDB
.
我按照这个分步指南进行操作;
http://docs.mongodb.org/manual/release-notes/3.0-upgrade/
第 1 步:启动 3.0 mongod。好的,我做到了。
步骤 2:使用 mongodump 导出数据。OK
步骤 3:为 WiredTiger 创建数据目录。好的 - 调整了用户权限。
第 4 步:使用 WiredTiger 重新启动 mongod。好的
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
是的,mongod
工作。但是Step-5
上面写着“使用 mongorestore 上传导出的数据”。但是,我的控制台仍然很忙,并显示“正在等待端口 27017 上的连接”,因为最后一个命令不包含service mongod start
.
然后我尝试编辑我的/etc/mongod.conf
文件以作为服务运行。但我做不到。我将wiredTiger 目录添加为dbpath,但我想我需要编辑/etc/init/mongod.conf
文件,因为它包含一些更改db 目录权限的代码。
花了8个小时后,我认为没有足够的文档可以提供帮助,所以我想问一下;
为了能够将wiredTiger与MongoDB一起使用,我应该怎么做?
我想知道是否有人设法实现了这一目标?
安慰
2015-04-01 编辑: 我尝试了文档中的 change-storage-engine-to-wiredtiger部分。