MongoDB 7.0 动态 WiredTiger tickets
2023-12-16 13:46 abce 阅读(127) 评论(0) 编辑 收藏 举报在WiredTiger存储引擎中,WiredTiger tickets提供了并发控制机制。这些tickets分为读tickets和写tickets。
当多个操作,比如读和写尝试并发访问数据库,WiredTiger使用tickets来确保这些操作不会冲突,从而保证数据的完整性和性能。
WiredTiger中的"tickets"实际上是一种资源管理机制,用于限制同时进行的并发读写操作的数量。每当一个读操作或写操作开始时,它需要从相应的票池中获取一个票,操作完成后,票会被返回到池中。如果所有的票都被使用了,新的操作就必须等待,直到有票可用。
在MongoDB 7.0之前的版本中,wiredTigerConcurrentReadTransactions、wiredTigerConcurrentWriteTransactions变量控制并发读/写事务进入WiredTiger存储引擎的数量,在MongoDB 7.0中,默认是128个tickets。
1 2 3 4 5 6 7 8 9 | db.runCommand({ getParameter: 1, wiredTigerConcurrentReadTransactions: 1 }); { "wiredTigerConcurrentReadTransactions" : 128, [...]} db.runCommand({ getParameter: 1, wiredTigerConcurrentWriteTransactions: 1 }); { "wiredTigerConcurrentWriteTransactions" : 128, [...]} |
MongoDB 7.0中,这两个变量变成动态的了。
1 2 3 4 5 6 7 8 9 | db.runCommand({ getParameter: 1, wiredTigerConcurrentReadTransactions: 1 }); { wiredTigerConcurrentReadTransactions: 0, [...]} db.runCommand({ getParameter: 1, wiredTigerConcurrentWriteTransactions: 1 }); { wiredTigerConcurrentWriteTransactions: 0, [...]} |
1 2 3 4 5 | db.serverStatus().wiredTiger.concurrentTransactions. read .totalTickets 12 db.serverStatus().wiredTiger.concurrentTransactions.write.totalTickets 12 |
MongoDB 7.0采用了全新的算法来动态管理tickets。此外,在MongoDB 7.0之前,wiredTigerConcurrentReadTransactions、wiredTigerConcurrentWriteTransactions变量只是适用于WiredTiger存储引擎;自7.0开始,还适用于In-Memory存储引擎。
值得一提的是,有了这一新变化后,应全面检查 WiredTiger 指标,而不是将其作为一个单独的部分,否则可能会得出错误的结论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2021-12-16 Oracle中有大量的sniped会话
2021-12-16 Oracle kill会话
2015-12-16 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated
2015-12-16 explicit_defaults_for_timestamp参数
2015-12-16 EBS创建相应的用户