Skip to content

v2.4.12 增加incr_sync.shard_by_object_id_whitelist参数解决没有唯一索引情况下的单表倾斜问题

Vinllen Chen edited this page Sep 1, 2020 · 2 revisions

有的时候,用户存在大表倾斜,可能某个表特别大,导致整体增量同步性能比较低。默认情况下,incr_sync.shard_key参数是为collection,表示按表并发,另外还有id表示按_id并发,只有所有表都没有唯一索引,才可以使用id。但是,如果用户存在大表倾斜的情况下,这个大表还没有唯一索引,那么其实这个大表可以加入白名单,进行更高层次的并发,比如按_id进行并发,从而提高并发的效率。
因此,v2.4.12版本中添加了incr_sync.shard_by_object_id_whitelist,指定哪些表可以进行按_id并发,前提是这些指定的表不能存在唯一索引,一旦出现唯一索引,mongoshake将会直接crash退出。
使用说明
用户需要确认该表不会创建唯一索引,一旦检测发现存在唯一索引,则会立刻crash退出。例如,db1.collection1;db2.collection2,不支持仅指定db:incr_sync.shard_by_object_id_whitelist = db1.collection1;db2.collection2

注意,用户需要自己保证配置的表不存在唯一索引!