首页 > 数据库 >MongoDB WiredTiger的读/写ticket

MongoDB WiredTiger的读/写ticket

时间:2023-10-18 10:23:53浏览次数:33  
标签:MongoDB WiredTiger 并发 128 操作 ticket 默认值

在WiredTiger中,读/写ticket控制着并发性。也就是说,读/写ticket控制着有多少读写操作可以同时在存储引擎上执行。这是WiredTiger特有的设置,因此不会影响数据库中并发操作的数量。MongoDB有单独的机制来保存操作进度,可以退让给其他操作。

 

默认值

读/写ticket的默认值都是128。这个值足够大,以至于在典型的服务器硬件上,WiredTiger的并发性不会成为瓶颈。

由于这些设置的值限制了并发操作,因此我们有理由认为,增加 WiredTiger 的读/写ticket将减轻操作队列压力。

然而,在大多数情况下,WiredTiger并发性只是队列压力的症状,而不是原因。在这种情况下,增加WiredTiger的读/写ticket数量会导致系统其他部分(如 CPU 和 I/O)的排队情况比正常情况更不可控。

 

读/写ticket数量耗尽

当可用读/写ticket数降为零时,并发运行的操作数等于配置的读/写值。这意味着任何其他操作都必须等到其中一个运行线程完成其在存储引擎上的工作后才能执行。

在大多数情况下,读/写ticket数降为零表示负载增加或性能缓慢(例如硬件速度慢或查询索引不佳),导致操作运行时间比预期长很多。

长时间运行的操作可能会导致可用ticket数量减少,从而降低系统并发性。例如,如果读取ticket数量在减少,那么很有可能存在一些长期运行的缺乏索引的操作。如果想找出哪些操作速度较慢,可以使用第三方工具。可以根据系统的需要调整ticket的增减,并确定对性能的影响

 

更改读/写ticket的默认值

只有在经过全面评估后,才建议更改读/写ticket的值。在不是问题原因的情况下增加读/写ticket可能会导致性能持续下降。将值改为太大的数字(远高于可用内核)还可能迫使 CPU 将更多时间用于执行昂贵的上下文切换,而不是实际工作。这将导致吞吐量下降,队列压力增加。

 

查看tickets的使用情况

> db.serverStatus().wiredTiger.concurrentTransactions
{
  write: { out: 0, available: 128, totalTickets: 128 },
  read: { out: 0, available: 128, totalTickets: 128 }
}

 

修改ticket的值

可以动态修改,不需要重启实例

db.adminCommand( { setParameter: 1,
   wiredTigerConcurrentReadTransactions: xx } )
db.adminCommand( { setParameter: 1,
   wiredTigerConcurrentWriteTransactions: xx } )

 

标签:MongoDB,WiredTiger,并发,128,操作,ticket,默认值
From: https://www.cnblogs.com/abclife/p/17771449.html

相关文章

  • 「BZOJ2505」tickets 题解
    preface网上目前还没看到我的方法,就大概讲一下做法solution首先想到贪心,考虑\([l,r]\)的最大次数,一定是找到最小的\(x\)满足\(l\simx\)的位数的和大于等于\(k\),然后递归的求解\([x+1,r]\),易证。还是考虑将\(Query(l,r)\)拆分成\(Query(1,r)\)和\(Query......
  • python链接mongodb的问题
    python链接mongodb需要指定数据库importpymongomonclient=pymongo.MongoClient("mongodb://用户名:密码@192.168.10.200:27017/数据库名")mondb=monclient["数据库名"]moncol=mondb["表名"]网上很多资料都没有指定数据库名,导致后续操作提示没有权限......
  • Docker安装Mongodb
    一、宿主机创建目录,存放mongodb配置信息、数据信息mkdir-p/usr/local/mymongo/conf二、参考官方配置文档,配置mongod.conf#在上面的conf目录下,创建mongod.confsystemLog:destination:filepath:/var/log/mongodb/mongod.loglogAppend:truestorage:dbPath:......
  • mongodb 安装
    macOS12.6.7使用.tgz,安装版本4.4参考:https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-os-x-tarball/.tgz方式需要自己创建mongod.conf,这里放到了/etc参考:https://www.mongodb.com/docs/v4.4/reference/configuration-options/https://www.mongodb.com/docs......
  • 轻松掌握组件启动之MongoDB(上):高可用复制集架构环境搭建
    MongoDB复制集复制集架构在生产环境中,强烈不建议使用单机版的MongoDB服务器。原因如下:单机版的MongoDB无法保证系统的可靠性。一旦进程发生故障或是服务器宕机,业务将直接不可用。此外,一旦服务器上的磁盘损坏,数据会直接丢失,而此时并没有任何副本可用。为了确保数据的高可用性和......
  • mongoDB​二
    MongoDB中的索引索引就是为了加速查询的,MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令:创建索引:db.集合名称.ensureIndex({"name":1})1代表索引升序存储-1代表索引降序存储_id默认自动创建索引注意:该索引被创建后,基......
  • MongoDB一
    MongoDB的引言MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。Nosql技术门类redis内存型mongodb文档型MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他......
  • 轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
    引言我们将继续深入研究组件启动专题。在之前的文章中,我们已经详细介绍了Redis的各种配置使用方法,为读者提供了全面的指导。然而,今天我们将转向另一个备受关注的数据库——MongoDB。MongoDB是一种流行的NoSQL数据库,具有强大的灵活性和可扩展性。在这篇文章中,我们将探索MongoDB的......
  • 【技术积累】《MongoDB实战》笔记(1)
    《MongoDB实战》笔记第一章为现代Web而生的数据库特性mongodb适合做水平扩展的数据库。mongodb把文档组织成集合,无schema。索引mongodb的二级索引是B树实现。每个集合最多可以创建64个索引,副本集mongodb通过副本集(replicationset)的结构提供了复制功能。副本集有一个主......
  • MongoDB 4.2 需关闭FlowControl流控机制
    MongoDB4.2版本引入了流量控制特性,用于保持副本集多数提交延迟不超过指定的最大值,从而确保数据的一致性和可靠性。如果复制延迟达到"flowControlTargetLagSeconds":10(秒),流量控制机制就会开始限制主节点上的写入操作。db.adminCommand({getParameter:1,"flowControlTargetL......