为什么我们要从MySQL迁移到TiDB?
定位到是: mysql> show global variables like 'tidb_ddl_reorg_worker_cnt'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | tidb_ddl_reorg_worker_cnt | 16 | +---------------------------+-------+ 1 row in set (0.11 sec)
mysql> show global variables like 'tidb_ddl_reorg_batch_size'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | tidb_ddl_reorg_batch_size | 1024 | +---------------------------+-------+ 上述两个参数对已有非 pcie 集群压力比较大导致。通过 set global 调节(3.0.3 后,默认从 256 涨到了 1000 和 16): tidb_ddl_reorg_batch_size 1000-256 tidb_ddl_reorg_worker_cnt 16-4 同时,提高 Compaction 相关: max-background-jobs: 8-10-12 max-sub-compactions: 1-2-4 defaultcf.compression-per-level: ["lz4", "lz4", "lz4", "lz4", "lz4", "zstd", "zstd"] writecf.compression-per-level: ["lz4", "lz4", "lz4", "lz4", "lz4", "zstd", "zstd"] 最终的优化结果是,QPS 稳定在 3K 左右: ⑦静默 Region 开启 在实际情况中,读写请求并不会均匀分布到每个 Region 上,而是集中在少数的 Region 上。 那么可以尽量减少暂时空闲的 Region 的消息数量,这也就是 Hibernate Region 的功能。 无必要时可不进行 raft-base-tick,即不驱动空闲 Region 的 Raft 状态机,那么就不会触发这些 Region 的 Raft 产生心跳信息,极大地减小了 Raftstore 的工作负担。 截至 TiDB v3.0.5,Hibernate Region 仍是一个实验功能,在 TiKV master 分支上已经默认开启。可根据实际情况和需求来开启该功能。 参数如下: raftstore.hibernate-regions: true (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |