《關于PostgreSQL性能改進的幾點思路--章晨曦.pdf》由會員分享,可在線閱讀,更多相關《關于PostgreSQL性能改進的幾點思路--章晨曦.pdf(26頁珍藏版)》請在三個皮匠報告上搜索。
1、PostgreSQL中文社區第13屆PostgreSQL中國技術大會聚焦云端創新匯聚智慧共享章晨曦(Jet)關于PostgreSQL性能改進的幾點思路PostgreSQL中文社區性能瓶頸(一)的應對方案03可能存在的性能瓶頸0102PostgreSQL中文社區目錄contents性能瓶頸(二)的應對方案01可能存在的性能瓶頸PostgreSQL中文社區PostgreSQL中文社區01 可能存在的性能瓶頸 SQL硬解析帶來的巨大開銷PostgreSQL中文社區01 可能存在的性能瓶頸 SQL硬解析帶來的巨大開銷SELECT abalance FROM pgbench_accounts WHERE
2、 aid=1000;PostgreSQL中文社區01 可能存在的性能瓶頸 SQL硬解析帶來的巨大開銷SELECT abalance FROM pgbench_accounts WHERE aid=1000;PostgreSQL中文社區01 可能存在的性能瓶頸 SQL硬解析帶來的巨大開銷SELECT abalance FROM pgbench_accounts WHERE aid=1000;PostgreSQL中文社區01 可能存在的性能瓶頸 SQL硬解析帶來的巨大開銷 UPDATE導致的數據塊膨脹PostgreSQL中文社區01 可能存在的性能瓶頸 UPDATE導致的數據塊膨脹CREATE T
3、ABLE ta(a INT,b VARCHAR(10);INSERT INTO ta VALUES(1,aaaaaaaa);DO$BEGIN FOR i IN 1.100000 LOOP UPDATE ta SET b=aaaaaaAB WHERE a=1;END LOOP;END;$LANGUAGE plpgsql;膨脹了545倍!02性能瓶頸(一)的應對方案PostgreSQL中文社區PostgreSQL中文社區02 性能瓶頸(一)的應對方案PREPARE為什么更快?PREPARE階段EXECUTE階段PostgreSQL中文社區02 性能瓶頸(一)的應對方案引入SQL軟解析的能力SELE
4、CT abalance FROM pgbench_accounts WHERE aid=1000;SELECT abalance FROM pgbench_accounts WHERE aid=$1;$1:=1000PostgreSQL中文社區02 性能瓶頸(一)的應對方案引入SQL軟解析的能力后的性能表現pgbench-r-j16-c16-T60-P5-S-p 5492 bench1020000400006000080000100000120000140000160000180000QPSQPSstatement_sharing=normalstatement_sharing=nonePos
5、tgreSQL中文社區02 性能瓶頸(一)的應對方案SQL軟解析優勢 實際環境更優的性能表現 對應用透明SQL軟解析劣勢處理邏輯變得更復雜需要額外的內存空間03性能瓶頸(二)的應對方案PostgreSQL中文社區PostgreSQL中文社區03 性能瓶頸(二)的應對方案INSERT的過程PostgreSQL中文社區03 性能瓶頸(二)的應對方案DELETE的過程PostgreSQL中文社區03 性能瓶頸(二)的應對方案UPDATE的過程PostgreSQL中文社區03 性能瓶頸(二)的應對方案TUU(Tuple-level Update-only Undo)技術方案PostgreSQL中文社區
6、03 性能瓶頸(二)的應對方案TUU(Tuple-level Update-only Undo)技術方案Undo-Tuple Chain(Per-Tuple)PostgreSQL中文社區03 性能瓶頸(二)的應對方案TUU(Tuple-level Update-only Undo)技術方案Undo-Tuple Pages(Per-Relation)PostgreSQL中文社區03 性能瓶頸(二)的應對方案TUU方案的性能表現CREATE TABLE ta_ipu(a INT,b VARCHAR(10)USING heapinp;INSERT INTO ta_ipu VALUES(1,aaaaaaaa);DO$BEGIN FOR i IN 1.100000 LOOP UPDATE ta_ipu SET b=aaaaaaAB WHERE a=1;END LOOP;END;$LANGUAGE plpgsql;無膨脹PostgreSQL中文社區03 性能瓶頸(二)的應對方案TUU方案的優勢 數據塊不膨脹 通過Table Access Method實現,使用靈活 對WAL日志格式不侵入TUU方案的劣勢當前功能還不太完善需要更多的測試及驗證PostgreSQL中文社區Q&APostgreSQL中文社區感謝聆聽!