调整数据库参数

最近更新时间:2025-07-23 11:57:12

我的收藏
云数据库 MongoDB 支持对数据库部分参数进行调整,使得数据库特性能更好地适应业务需求。

背景信息

在日常运维过程中,快速调整数据库的部分参数可以针对性地优化数据库的查询、管理性能,适应时常变化的业务场景。同时,支持随时查看参数的修改历史记录,保证定位异常有据可依。

版本说明

当前 MongoDB 3.2及以上版本均支持对数据库参数进行修改。但每个版本可修改的参数存在差异,以控制台上展示的参数为准。

使用须知

当前参数修改功能仅支持修改后无需重启即可生效的参数,修改后需要重启生效的参数待后期版本更新。您也可通过 MongoDB 终端自行设置,重启会造成连接中断,请提前做好业务安排,谨慎操作。
更新集群架构或配置,例如,调整配置规格、调整节点、调整分片、节点升级、节点迁移等操作,不需要重复进行参数配置,系统将自动同步参数配置的数据。

前提条件

实例状态运行正常。

调整参数

1. 登录 MongoDB 控制台
2. 在左侧导航栏,选择副本集实例或者分片实例,二者操作过程类似。
3. 在右侧实例列表中,找到目标实例。
4. 单击目标实例 ID,进入实例详情页面。
5. 切换至参数配置页签,进入可修改参数页面,单击修改运行值
6. 当前运行参数值列的输入框,重新设置需修改的参数值。如下图所示。
说明:
您可以同时修改多个参数。
修改参数时,请务必根据参考值设置。
修改后需重启列,关注是否会重启实例,重启会造成连接中断,请提前做好业务安排,谨慎操作。

参数生效范围因实例版本与架构有关,当前版本支持修改的参数如下表所示。
参数名
修改后是否重启
默认值
参考值
支持版本
支持实例类型
适用范围
参数解释
operation.profiling.slowOpThresholdMs
100
[0-65536]
4.0、4.2、4.4、5.0、6.0、7.0
副本、分片
mongod、mongos
设置慢查询时间判定时间,单位:毫秒。
operationProfiling.mode
off
[off | slowOp | all]
副本、分片
mongod
该参数用于设置数据库的操作性能分析模式。通过设置不同的模式,可以记录数据库操作的性能数据,以便进行性能优化和故障排查。该参数有以下几种可选值:
off:关闭操作性能分析。
slowOp:记录慢操作,即执行时间超过阈值的操作,默认阈值为100毫秒。
all:记录所有操作的性能数据。
setParameter.cursorTimeoutMillis
600000
[1-2147483647]
副本、分片
mongod、mongos
该参数用于设置游标的最大空闲时间,即游标在一定时间内没有被使用时会被自动关闭,释放相关资源。默认情况下,该参数的值为10分钟。如果需要延长或缩短游标的超时时间,可以通过修改该参数的值来实现。需要注意的是,如果将该参数设置为0,则表示禁用游标超时机制,游标将一直保持打开状态,直到客户端主动关闭为止。
setParameter.intenalQueryExecMaxBlockingSortBytes
33554432
[33554432-268435456]
副本、分片
mongod
该参数控制了 MongoDB 在执行排序操作时所能使用的最大内存量。当 MongoDB 执行一个需要排序的查询时,它可能需要在内存中对结果集进行排序。如果结果集的大小超过了所设置的值,MongoDB 就会使用磁盘来进行排序操作,这可能会导致性能下降。单位:Byte。
setParameter.maxTransactionLockRequestTimeoutMillis
5
[0-60]
副本、分片
mongod
该参数控制了 MongoDB 事务在等待获取锁时的最大超时时间。当一个事务需要获取一个锁时,如果该锁已被其他事务持有,那么该事务就会等待一段时间,尝试获取该锁。如果等待时间超过了该参数设置的值,该事务就会抛出一个超时异常。单位:毫秒。
setParameter.transactionLifetimeLimitSeconds
60
[5-300]
副本、分片
mongod
设置单个事务的最长生命周期,单位:秒。当一个事务开始执行时,MongoDB 会为该事务分配一个唯一的事务 ID,并记录该事务的开始时间。如果该事务在所设置的时间内没有完成,MongoDB 就会自动回滚该事务并释放相关资源。
balance.window
NULL
[00:00 | 23:00]
分片
mongos
MongoDB 集群均衡操作用于将集群中的数据尽可能均匀地分布到各个节点上,以提高集群的性能和可用性。该参数指定 MongoDB 在多长时间内对集群进行一次均衡操作,以确保数据在节点之间的均匀分布。
openBalance.window
false
[true | false]
分片
mongos
启用或禁止 balance 窗口。
setParameter.tcmallocAggressiveMemoryDecommit
true
[true | false]
副本、分片
mongod、mongos
是否开启快速回收内存
cmgo.crossZoneLoadBalancing
off
on|off
分片
mongos
在多个可用区(AZ)之间是否均衡分配读写请求。
cmgo.retainVipWhenSwitchover
on
on|off
副本、分片
mongos
控制主备切换(Switchover/Failover)时是否保持 Virtual IP(VIP)不变。
setParameter.ttlDeleteBatch
2147483647
[1-2147483647]
副本、分片
mongod
控制 TTL (Time-To-Live) 索引在删除过期文档时的批次大小。
setParameter.ttlMonitorSleepSecs
60
[60-600]
副本、分片
mongod
控制 MongoDB TTL 监控线程(TTLMonitor)的运行频率,即该线程每次执行后休眠的秒数。
setParameter.failIndexKeyTooLong
true
[true | false]
3.2、3.6、4.0
副本、分片
mongod
设置是否限制索引键的长度。
如果该参数被设置为 true,当 MongoDB 创建一个索引时,如果该索引键的长度超出了 MongoDB 所支持的最大限制,MongoDB 就会抛出一个错误并拒绝创建该索引
storage.wiredTiger.collectionConfig.blockCompressor
snappy
[snappy | zlib | zstd]
4.2、4.4、5.0、6.0、7.0
副本、分片
mongod
该参数指定 MongoDB 的 WiredTiger 存储引擎对集合数据使用的块压缩算法(如 snappy、zlib 或 none),用于在磁盘存储时压缩数据块以节省空间。
snappy(默认):平衡压缩率与 CPU 开销,推荐多数场景。
zlib:更高压缩率,但 CPU 消耗显著增加。
zstd:比 snappy 节省 20%~30% 磁盘空间(视数据类型而定);解压速度接近 snappy,压缩速度显著快于 zlib。
setParameter.migrateCloneInsertionBatchDelayMS
0
[0-5000]
分片
mongod
该参数控制 MongoDB 分片集群在数据迁移过程中,每次批量插入文档到目标分片后的等待时间(毫秒),用于调节迁移对目标分片的 I/O 压力。
setParameter.rangeDeleterBatchDelayMS
20
[0-5000]
分片
mongod
该参数控制 MongoDB 分片集群在数据迁移完成后,源分片批量删除旧数据块(Chunk)之间的延迟时间(毫秒),用于调节删除操作对源分片的 I/O 压力。
setParameter.rangeDeleterBatchSize
128
[0-2147483647]
分片
mongod
该参数控制 MongoDB 分片集群在数据迁移后,源分片每次批量删除旧数据块(Chunk)的文档数量上限,用于平衡删除效率与集群负载。
setParameter.migrateCloneInsertionBatchSize
0
[0-5000]
分片
mongod
该参数控制 MongoDB 分片集群在数据迁移过程中,目标分片每次批量插入文档的数量上限(单位:文档数),用于平衡迁移速度与目标分片的负载压力。
setParameter.internalQueryMaxBlockingSortMemoryUsageBytes
33554432
[33554432-268435456]

副本、分片
mongod、mongos
该参数控制 MongoDB 在执行阻塞式排序(无法使用索引时)时,单个查询在内存中最多能占用的排序缓冲区大小(单位:字节),超出此限制将触发磁盘临时文件排序。
7. 单击右下角的确定,完成修改。在修改历史页面,可查看看参数修改的历史记录,您可以查看参数修改前后的值、修改状态以及修改时间。