代码改变世界

MongoDB 7.0 动态 WiredTiger tickets

  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 指标,而不是将其作为一个单独的部分,否则可能会得出错误的结论。

相关博文:
阅读排行:
· 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创建相应的用户
点击右上角即可分享
微信分享提示