tidb 造数据速度变慢

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

测试环境下,126G内存40C,3.6T磁盘(普通盘,非SSD)。
脚本死循环执行,通过把tb1的表 insert into tb2(不带id字段,让id自增) select (不带id字段,让id自增) from tb1 ;
最开始的时候大概是2800条/秒,现在表里面插入大概10亿以后,大概是1800条/秒

这么巧,我也在造数据,我用这个更慢。 :rofl:

for i in `seq 1000000`; do mysql -uroot -P4000 -h127.0.0.1 -e "insert into test.t1 values($i,floor(rand()*10000000),substring(md5(rand()),1,5),substring(md5(rand()),1,10))";done;

我打算造几十亿,现在看起来好像很遥远。

可以用sysbench工具插入数据啊 https://docs.pingcap.com/zh/tidb/stable/benchmark-tidb-using-sysbench#如何用-sysbench-测试-tidb

一条条插入是慢的 你可以生成个csv文件 直接load进表里

sysbench 压测的字段太少,表的宽度太短了。

试过load,也没觉得快。我insert into select 。select 部分是20W的数据。

sysbench用的脚本是lua语言写的 可以自己研究下修改他的脚本 多加几个字段, https://raw.githubusercontent.com/pingcap/tidb-bench/master/sysbench/sysbench-patch/oltp_common.lua

去研究那个,和我自己写脚本都没多大差别了。我好奇的是,为啥会变慢了那么多。从2800条/秒降低到1800条/秒

你先把索引删了试试

1.8亿的时候加索引要7分钟。现在15亿,我怕删索引后加不回来了。

插入数据同时需要维护索引数据 消耗的资源肯定越来越多 插入变的越来越慢是正常的

只慢这一次,后面可以Lightning

写个脚本直接用CTE造数据,具体写法如下,一次不要搞太多,100万足以。写个循环跑就行

insert into t9
WITH RECURSIVE xxx (sort, category, interesting) AS
(
SELECT 51000001, 1, 1
UNION ALL
SELECT sort + 1, (sort+1)%1000, (sort+1)>50000 FROM xxx WHERE sort<=52000000
)
SELECT * FROM xxx;

通过把tb1的表 insert into tb2(不带id字段,让id自增) select (不带id字段,让id自增) from tb1

有个简单的方式,用batch ,通过limit来控制速度,想快就快想慢就慢

BATCH | PingCAP 文档中心

1 个赞

tidb适合处理这个量级的数据么

10亿 不算多,不用ssd才是问题,跑啥数据库也快不了

这个生成数据快,但是插入不一定快。

这个跟我的insert into select 没啥差别吧?

不知道,所以我才测着玩的。目前看起来我的可能跑到30亿左右磁盘满。