oceanbase插入数据慢怎么解决


来源表一亿六千万条数据只json解析了一下在插回数据库显示插入操作: 1,488,200秒 (100%)

1 个赞

麻烦提供一下原sql文本和涉及的表结构

1 个赞

image


explain INSERT INTO test.user_info_detail (id, name, json_create_time)
SELECT /*+ PARALLEL(64) */
json_data->>’$.id’ as id,
json_data->>’$.name’ as name,
json_data->>’$.create_time’ as json_create_time
FROM test.user_info;

2 个赞

试试分批循环执行

1 个赞

如何实现用的obclient

1 个赞

写个循环存储过程,这需要根据你们的表和业务逻辑自行修改,比如一次跑1000w行

2 个赞

一亿六千万条数据 24分钟插入,相当于每秒十万多条,这个性能在oceanbase算性能好吗,修改配置还能提高吗

1 个赞

可以提供一下不转json格式单独查询的执行计划。看表结构是相当于1.6E全表扫查询的。

1 个赞

这个和全表扫描没什么关系吧,我现在是测试实际可能数据量比一亿六千条还要多,我现在只想怎么能够优化这个插入的效率

1 个赞

insert into selelct 。。。。语句最好的方法还是优化查询sql,insert并不会存在异常慢的问题。

2 个赞

可以试试旁路导入语法
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003977057

INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;
Query OK, 3 rows affected
Records: 3  Duplicates: 0  Warnings: 0
2 个赞

看看去掉事务日志能不能快一点

单纯的事务一个个插,或者批量插入,在集群没有其他过分负载的情况下,一般也快不到哪里去。像楼上所说,建议使用旁路导入试试。

如何去掉事务日志