PostgreSQL 批量導入性能 (採用dblink 異步調用)

標籤

PostgreSQL , unlogged table , 批量 , dblinkgit

背景

批量導入數據,怎樣能挖掘出系統的比較極限的潛能?github

瓶頸一般在哪裏?數據庫

一、WAL lock函數

二、INDEX lockpost

三、EXTEND LOCK性能

四、autovacuum 干擾測試

所以最好的方法就是排除以上問題,例如spa

一、使用多表,解決單表EXTEND LOCK問題插件

二、使用unlogged table(異常時會丟失數據,切記僅限場景使用)多表,解決WAL LOCK問題code

三、不使用索引,解決INDEX LOCK問題

四、導入時不使用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) 不含索引單表單點寫入》

單表測試

一、建立測試表

postgres=# create unlogged table ut(c1 int8) with (autovacuum_enabled=off, toast.autovacuum_enabled=off);  
CREATE TABLE  
Time: 12.723 ms

二、生成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

三、建立插件

create extension dblink;

四、建立重複創建鏈接不報錯的函數

相關文章
相關標籤/搜索