GBase 8a 集群insert慢的原因以及如何提高insert values性能

GBase 8a 提供了标准SQL的insert values 方式插入数据,但由于列存在小数据量磁盘IO上的先天劣势,性能很差。本文提供集中方法,可以在一定程度上提高插入性能,但如果你的数据很多,还是建议用LOAD的方式,insert如何优化也至少比load性能下降1-2个数量级以上。

如果你只有几百,几千条初始化用的,为了简化,也可以考虑如下的方案insert。

实现方法1

如果有方法,将values部分合并成如下的样式

insert into myTable valeus (1),(2),(3),(4);

每个值之间用逗号分割,则可以作为一个SQL提交数据库执行,性能较好。

实现方法2

关闭自动提交来提高多条insert数据的性能.【

注意在V95版本里,该功能通过参数_t_gcluster_oldtransaction_support_set_autocommit控制,其默认是关闭的,需要手工打开。详情参考 GBase 8a数据库集群V95版本相对V8版本变动内容汇总

set autocommit=0

insert into myTable values (1);

insert into myTable values (2);

insert into myTable values (3);

commit;
set autocommit=1;

参考