如何提高insert效率

各位老师好,如何提高insert效率呢,insert 1000行数据,ob大概秒级,mysql毫秒级,这个有什么优化方法吗,已经试过了加并发/*+ parallel(16) enable_parallel_dml */,但是效率基本没变化,insert时,发现memstore的使用率也不高。

1 个赞

可以看下执行计划或者从ocp上看下,耗时是在那个步骤,ob正常插入不应该这么慢

2 个赞

set ob_enable_trace_log = 1;
执行sql
show trace
看下主要是哪一步耗时最多

1 个赞

插入的数据跨分区了?

1 个赞

还得看怎么insert的,jdbc 吗?还是单纯insert很多条记录。
以及需要看表分区清理。
insert记录的分区分布。
才能更好的分析。

1 个赞

1、查看gv$sql_audit,查看时间消耗 ELAPSED_TIME,NET_TIME,NET_WAIT_TIME,QUEUE_TIME,DECODE_TIME,GET_PLAN_TIME,EXECUTE_TIME
2、开启sql_trace,查看具体消耗时间多的Title

1 个赞

单表

程序插,是不是不能加hint呢,确实是程序插的,这个怎么优化下呢

jdbc url上参数,可以百度,提高性能

1 个赞

insert /*+ parallel(16) enable_parallel_dml */ into … values 这种explain了下,好像是不生效的

jdbc 参数里加上 rewriteBatchedStatement=true 试试

1 个赞

一个value开并行没啥用。executeBatch接口要在url开启批量参数

1 个赞

查查这个表是不是索引太多,尤其是全局索引

1 个赞