【我和openGauss的故事】openGauss psycopg2 批量操作性能测试
测试版本
本测试基于 openGauss 版本的 psycopg2 驱动
import psycopg2 as pg
>>> pg.__libpq_version__
90204
>>> pg.__version__
'2.8.6 (dt dec pq3 ext)'
测试环境
组件 |
说明 |
客户端 |
Rocky Linux 8 虚拟机 |
数据库 |
openGauss 3.0.3 in docker |
网络 |
本地回路网卡 |
Python |
3.6.8 |
测试接口
接口名 |
说明 |
备注 |
cursor.executemany(query, vars_list) |
执行一个数据库操作,vars_list 列表中的所有参数会逐个被应用到query 中,每组参数都会单独封包发送给服务端。 |
该函数主要用于更新数据库的命令,查询返回的任何结果集都将被丢弃。在其当前实现中,此方法并不比在循环中执行execute()快。 |
psycopg2.extras.execute_batch(cur, sql, argslist, page_size=100) |
批量执行一个数据库操作,执行的SQL和 executemany 相同,只是单个数据包发送时会发送一批SQL,数量由page_size决定。这样可以减少和服务端的通信次数 |
execute_batch()也可以和预处理语句(PREPARE, EXECUTE, DEALLOCATE)一起使用。 |
extras.execute_batch + 预处理语句 |
使用PREPARE提交创建一个statement,然后通过 execute_batch 提交 |
|
psycopg2.extras.execute_values |