psycopg2 数据批量插入问题记录

由于最近用到greenplum,需要进行一些数据库批量插入操作,由于其操作方式与postgresql相同,因此采用的是psycopg2(2.8.4) 做底层驱动。

由于数据量较大,所以采用了批量插入操作,也就是其自带的executemany,从名字来看会给我们其真的是批量插入的错觉(搜了下,大部分搜索结果也是说批量插入使用该操作,坑~(⊙﹏⊙)),但是,实际执行时发现插入速度过慢,觉得很奇怪,通过

SELECT
	*
FROM
	pg_stat_activity
WHERE
	usename = 'your-use-name'
AND xact_start IS NOT NULL

查看实际执行情况,发现其最终还是单条数据执行插入,这不是坑嘛,难怪慢,对psycopg2源码进行查看,发现其extras.py模块有个execute_values方法,这个才是真正的执行批量操作,然后就替换了,速度就哐哐哐上来了,over~

参考:
1. Postgresql实用技巧

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐