标签
PostgreSQL , unlogged table , 批量 , dblink
背景
批量导入数据,怎样能挖掘出系统的比较极限的潜能?
瓶颈通常在哪里?
1、WAL lock
2、INDEX lock
3、EXTEND LOCK
4、autovacuum 干扰
因此最好的方法就是排除以上问题,例如
1、使用多表,解决单表EXTEND LOCK问题
2、使用unlogged table(异常时会丢失数据,切记仅限场景使用)多表,解决WAL LOCK问题
3、不使用索引,解决INDEX LOCK问题
4、导入时不使用autovacuum,解决autovacuum干扰问题
我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。
基本上可以挖掘出机器的最大潜力。
《HTAP数据库 PostgreSQL 场景与性能测试之 43 - (OLTP+OLAP) unlogged table 含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 42 - (OLTP+OLAP) unlogged table 不含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 41 - (OLTP+OLAP) 含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 40 - (OLTP+OLAP) 不含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 39 - (OLTP+OLAP) 含索引多表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 38 - (OLTP+OLAP) 不含索引多表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 37 - (OLTP+OLAP) 含索引单表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 36 - (OLTP+OLAP) 不含索引单表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 35 - (OLTP+OLAP) 含索引单表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 34 - (OLTP+OLAP) 不含索引单表单点写入》
单表测试
1、创建测试表
postgres=# create unlogged table ut(c1 int8) with (autovacuum_enabled=off, toast.autovacuum_enabled=off);
CREATE TABLE
Time: 12.723 ms
2、生成1亿数据
postgres=# insert into ut select generate_series(1,100000000);
INSERT 0 100000000
Time: 43378.465 ms (00:43.378)
postgres=# copy ut to '/data01/pg/ut.csv';
COPY 100000000
Time: 20292.684 ms (00:20.293)
# ll -ht /data01/pg/ut.csv
-rw-r--r-- 1 digoal digoal 848M Apr 27 22:02 /data01/pg/ut.csv
3、创建插件
create extension dblink;
4、创建重复建立连接不报错的函数