SoHuDrgon
(Ti D Ber Hr W2zw V1)
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】v7.1.0
【遇到的问题:问题现象及影响】
是一个java项目,每天去ftp上拉取csv文件,csv文件条目100w条+,java项目将其转换成sql语句,批量插入到tidb中,但是插入的时候tidb的CPU就暴涨,高的时候40核心的cpu负载直接到80-100左右。
进行过的优化如下:
1.调整jdbc的参数
useSSL=false&useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSize=256&prepStmtCacheSqlLimit=2048&rewriteBatchedStatements=true&allowMultiQueries=true&useConfigs=maxPerformance
问题还是存在
2.调整了批量插入数据的条数,一条insert语句带的数据从2000条降到1000条,从1000条降到500,500到400,问题还是存在
3.建表开启了/*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=2 */
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
各位需要什么信息可以提出来,我贴出监控信息给各位查看。
zhanggame1
(Ti D Ber G I13ecx U)
2
没啥好办法,如果能减少表上的索引可以大幅增加插入速度。另外不要一条条插入,一个insert带一万条数据问题不大
SoHuDrgon
(Ti D Ber Hr W2zw V1)
3
我现在是一条insert 带1000条数据,另外就是表里面索引是有的:
KEY idx_CUSTOMER_NUMBER
(CUSTOMER_NUMBER
),
KEY idx_IDENTITY_NUMBER
(IDENTITY_NUMBER
),
KEY idx_PHONE
(PHONE
),
KEY idx_LOAN_CARD_NO
(LOAN_CARD_NO
),
KEY idx_MERCHANT_NAME
(CUSTOMER_NAME
),
KEY idx_LOAN_START_DATE
(LOAN_START_DATE
),
KEY idx_IS_REPAYMENT
(IS_REPAYMENT
),
KEY idx_LOAN_END_DATE
(LOAN_END_DATE
),
KEY idx_PRODUCT TYPE
(PRODUCT_TYPE
),
KEY idx_IS_UPLOADED
(IS_UPLOADED
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=2 */ |
好多索引啊,批量插入的时候,还在不断地维护索引呢
删掉,导入完成后,在创建吧
SoHuDrgon
(Ti D Ber Hr W2zw V1)
6
好的,谢谢各位大佬,我今天把索引全干掉了,明天观察一下!
你的索引也优化下,是不是必须 要这么多的索引,结合业务看看吧
SoHuDrgon
(Ti D Ber Hr W2zw V1)
10
谢谢各位大佬,今天观察了一下,没有索引情况下,系统负载很低。
我看他们开发建的索引explain也没走在上面。
不建索引了。
system
(system)
关闭
13
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。