同步oracle数据,怎样提升目标端tidb集群写入效率

【 TiDB 使用环境】Poc
业务场景是同步oracle数据库的报表业务数据到tidb数据库,测试下来发现100w字段少的表耗时50S,插入效率能达到2w+/s,但是字段稍微多一点的表插入效率只有3000/s左右,随着表字段数增加插入效率越低。业务要求tidb端写入效率最低在2w+/s以上
已经采取的措施:
1,优化大部分参数
2,内存从32G提升64G
3,剔除tiflash
但是都没有明显的提升效果。
接下来计划:
1,部署7.5版本的tidb集群
2,考虑增加tikv节点数

以下是集群信息以及硬件配置:
image

32C 64G 500G HDD和SDD混合共享存储

感谢社区大佬们指点迷津哈!

给你专业意见

1 换ssd

2 tidb 索引越多越慢

3 oracle的 ogg倒入慢的话 建议用dm
或是cloudcanal

1 换ssd —这个后面打算采用增加节点去替换

2 tidb 索引越多越慢 —索引不多,表最多只有主键或者唯一索引

3 oracle的 ogg倒入慢的话 建议用dm
或是cloudcanal --不考虑同步工具的耗时,主要是tidb端写入没有明显提升效果

问一下,PD界面有看到有写热点吗

1 个赞

看了监控,没有明显的写热点,因为是测试单表的效率。

贴一下看看kv 节点的IO情况~

tidb和tikv 混步会引起cpu 争抢
但最主要的是tidb 插入走的是事务 索引越多越卡


如上

你从oracle同步过来是单调自增 不改表结构
就是单机性能
而且tidb的性能经过网络 他只会比oracle单机更惨
tidb是用机器性能去换取扩展

他的写入基于硬件 只会比单机性能差

Thread CPU
这个监控界面也贴瞅瞅

tikv数量大于副本数的时候,理论上并发写入tidb会比单机oracle好

虽然你说没热点,但是这个图我不知道是时间不对还是什么原因,看max明显只有67在干活,且io没有打满。

68,69如果导入期间就15-17,我觉得和围观也差不太多了。

我压力测试经验,用聚簇表,需要表有主键,然后不要加任何二级索引写入最快

dashboard看下有没有热点表吧,我感觉你肯定没做表结构的优化https://docs.pingcap.com/zh/tidb/stable/high-concurrency-best-practices#tidb-高并发写入场景最佳实践

字段过多的段可以拆分一下