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;
四、建立重複創建鏈接不報錯的函數