PostgreSQL TPROC-C基準測試:PostgreSQL 12與PostgreSQL 13效能對比
postgresql13.0剛剛釋出,並在各個方面進行了許多效能改進。為了瞭解這些變化帶來了的差異,我使用HammerDB對不同數量的虛擬使用者執行了許多基準測試,比較了未調整配置和“啟動程式”調整配置的PostgreSQL 12.4和13.0,即我們建議使用者將其用作自己的部署的起點。
-
伺服器規格
被測伺服器( SUT )是執行 Red Hat Enterprise Linux 版本 8.2 ( Ootpa )的 Amazon AWS m5.metal 例項
PostgreSQL
資料目錄位於
RAID 10
中配置的八個磁碟上。檔案系統為
xfs
,預讀設定為
8192
。、
PostgreSQL WAL目錄位於其自己的磁碟上。檔案系統為 xfs,預讀設定為 8192。
-
PostgreSQL
這些測試在社群軟體包中的 PostgreSQL 12.4和 PostgreSQL 13.0上執行。每個伺服器的測試大多未經調整。
-
“ 未調整 ” 設定
所有其他設定保持預設值。
-
調整設定
所有其他設定保持預設值。
-
HammerDB
使用的測試驅動程式是 HammerDB,對資料模型進行了一些修改,以使用適當的 PostgreSQL 資料型別,最佳化列順序進行對齊,並刪除填充因子設定(有關使用的確切模式,請參見本文結尾處的 “ 資料模型 ” 部分) )。這些修改符合 TPC-C 規範:
第1.3節—表格佈局
對於每個表,可以使用從測試系統獲得的任何物理表示形式,以任何順序實現以下屬性列表。
HammerDB 使用的演算法未做任何更改。
HammerDB 使用 2000 個倉庫填充該資料庫。每個表都透過其主鍵索引進行聚類(歷史記錄中沒有索引)。 ANALYZE 和 VACUUM FREEZE 在所有表上執行。保留此原始資料庫的基本備份。
-
方法
對於每個虛擬使用者數,都會從基本備份中還原一個新資料庫。然後以5 分鐘的加速時間和1 小時的測試時間執行HammerDB 。
請注意,思考和關鍵時間已禁用,因為此測試的目的是檢視最大可能的效能。這不能反映實際的工作量,也不適合執行“
按本就算”
的TPC-C
基準測試。
注意:對於正確的TPC-C
基準測試,測試必須執行至少兩個小時。
-
結果
下表顯示了開箱即用和正確調整的 12.4 和 13.0 的結果。值表示每分鐘的交易量。
從該圖表中我們可以看到,
12.4
和
13.0
的未調整效能基本相同,其中
13.0
具有優勢,並且效能在
50
至
75
個虛擬使用者數之間最大化。
-
概要
測試表明,正確調整PostgreSQL 伺服器具有巨大的好處。13.0 版的開箱即用效能比12.4 更好,並且在調整兩個伺服器時的差異甚至更大。PostgreSQL 13 代表了開源關聯式資料庫的又一次飛躍,因為它隨著每個新版本的釋出而不斷完善 。
-
附錄 A :資料模型
CREATE TABLE customer (
c_since timestamp with time zone NOT NULL,
c_id integer NOT NULL,
c_w_id integer NOT NULL,
c_d_id smallint NOT NULL,
c_payment_cnt smallint NOT NULL,
c_delivery_cnt smallint NOT NULL,
c_first character varying(16) NOT NULL,
c_middle character(2) NOT NULL,
c_last character varying(16) NOT NULL,
c_street_1 character varying(20) NOT NULL,
c_street_2 character varying(20) NOT NULL,
c_city character varying(20) NOT NULL,
c_state character(2) NOT NULL,
c_zip character(9) NOT NULL,
c_phone character(16) NOT NULL,
c_credit character(2) NOT NULL,
c_credit_lim numeric(12,2) NOT NULL,
c_discount numeric(4,4) NOT NULL,
c_balance numeric(12,2) NOT NULL,
c_ytd_payment numeric(12,2) NOT NULL,
c_data character varying(500) NOT NULL,
CONSTRAINT customer_i1 PRIMARY KEY (c_w_id, c_d_id, c_id)
);
CREATE UNIQUE INDEX customer_i2 ON customer USING btree (c_w_id, c_d_id, c_last, c_first, c_id);
CREATE TABLE district (
d_w_id integer NOT NULL,
d_next_o_id integer NOT NULL,
d_id smallint NOT NULL,
d_ytd numeric(12,2) NOT NULL,
d_tax numeric(4,4) NOT NULL,
d_name character varying(10) NOT NULL,
d_street_1 character varying(20) NOT NULL,
d_street_2 character varying(20) NOT NULL,
d_city character varying(20) NOT NULL,
d_state character(2) NOT NULL,
d_zip character(9) NOT NULL,
CONSTRAINT district_i1 PRIMARY KEY (d_w_id, d_id)
);
CREATE TABLE history (
h_date timestamp with time zone NOT NULL,
h_c_id integer,
h_c_w_id integer NOT NULL,
h_w_id integer NOT NULL,
h_c_d_id smallint NOT NULL,
h_d_id smallint NOT NULL,
h_amount numeric(6,2) NOT NULL,
h_data character varying(24) NOT NULL
);
CREATE TABLE item (
i_id integer NOT NULL,
i_im_id integer NOT NULL,
i_name character varying(24) NOT NULL,
i_price numeric(5,2) NOT NULL,
i_data character varying(50) NOT NULL,
CONSTRAINT item_i1 PRIMARY KEY (i_id)
);
CREATE TABLE new_order (
no_w_id integer NOT NULL,
no_o_id integer NOT NULL,
no_d_id smallint NOT NULL,
CONSTRAINT new_order_i1 PRIMARY KEY (no_w_id, no_d_id, no_o_id)
);
CREATE TABLE order_line (
ol_delivery_d timestamp with time zone,
ol_o_id integer NOT NULL,
ol_w_id integer NOT NULL,
ol_i_id integer NOT NULL,
ol_supply_w_id integer NOT NULL,
ol_d_id smallint NOT NULL,
ol_number smallint NOT NULL,
ol_quantity smallint NOT NULL,
ol_amount numeric(6,2),
ol_dist_info character(24),
CONSTRAINT order_line_i1 PRIMARY KEY (ol_w_id, ol_d_id, ol_o_id, ol_number)
);
CREATE TABLE orders (
o_entry_d timestamp with time zone NOT NULL,
o_id integer NOT NULL,
o_w_id integer NOT NULL,
o_c_id integer NOT NULL,
o_d_id smallint NOT NULL,
o_carrier_id smallint,
o_ol_cnt smallint NOT NULL,
o_all_local smallint NOT NULL,
CONSTRAINT orders_i1 PRIMARY KEY (o_w_id, o_d_id, o_id)
);
CREATE UNIQUE INDEX orders_i2 ON orders USING btree (o_w_id, o_d_id, o_c_id, o_id);
CREATE TABLE stock (
s_i_id integer NOT NULL,
s_w_id integer NOT NULL,
s_ytd integer NOT NULL,
s_quantity smallint NOT NULL,
s_order_cnt smallint NOT NULL,
s_remote_cnt smallint NOT NULL,
s_dist_01 character(24) NOT NULL,
s_dist_02 character(24) NOT NULL,
s_dist_03 character(24) NOT NULL,
s_dist_04 character(24) NOT NULL,
s_dist_05 character(24) NOT NULL,
s_dist_06 character(24) NOT NULL,
s_dist_07 character(24) NOT NULL,
s_dist_08 character(24) NOT NULL,
s_dist_09 character(24) NOT NULL,
s_dist_10 character(24) NOT NULL,
s_data character varying(50) NOT NULL,
CONSTRAINT stock_i1 PRIMARY KEY (s_w_id, s_i_id)
);
CREATE TABLE warehouse (
w_id integer NOT NULL,
w_name character varying(10) NOT NULL,
w_street_1 character varying(20) NOT NULL,
w_street_2 character varying(20) NOT NULL,
w_city character varying(20) NOT NULL,
w_state character(2) NOT NULL,
w_zip character(9) NOT NULL,
w_tax numeric(4,4) NOT NULL,
w_ytd numeric(12,2) NOT NULL,
CONSTRAINT warehouse_i1 PRIMARY KEY (w_id)
);
原文連結:https://www.enterprisedb.com/blog/postgresql-tproc-c-benchmarks-postgresql-12-vs-postgresql-13-performance
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2740412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql:pgbench基準效能測試SQL
- postgresql無序uuid效能測試SQLUI
- PostgreSQL、Redis與Memcached的效能比較 - CYBERTECSQLRedis
- PostgreSQL 13–新特性SQL
- 【pgupgrade】Postgresql10升級到Postgresql13SQL
- PostgreSQL初體驗及其與MySQL的對比MySql
- openGauss資料與PostgreSQL的差異對比SQL
- PostgreSQL DBA(142) - PG 12(Monitoring PostgreSQL VACUUM processes)SQL
- 【PostgreSQL 】PostgreSQL 15對distinct的優化SQL優化
- PostgreSQL 12 正式釋出:全面的效能提升SQL
- PostgreSQL與MySQL的比較 - hackrMySql
- JDBC連線openGauss6.0和PostgreSQL16.2效能對比JDBCSQL
- MySQL效能基準測試對比:5.7 VS 8.0MySql
- PostgreSQL 原始碼解讀(13)- 插入資料#12(PostgresMain)SQL原始碼AI
- PostgreSQL DBA(141) - PG 12(Discovering less-known PostgreSQL v12 features)SQL
- PostgreSQL基礎SQL
- oracle Mysql PostgreSQL 資料庫的對比OracleMySql資料庫
- PostgreSQL 13–改進後的基礎備份SQL
- postgresql 9.6 分割槽表測試方案與記錄SQL
- Kunlun-Storage vs PostgreSQL OLTP 測試SQL
- PostgreSQL:資料庫連結測試SQL資料庫
- PostgreSQL與Rust的聚合實現比較SQLRust
- PostgreSQL DBA(125) - PG 12(TPCC)SQL
- PostgreSQL的幾種分散式架構對比SQL分散式架構
- PostgreSQL DBA(45) - Hypothetical Indexes in PostgreSQLSQLIndex
- ROW_NUMBER 開窗函式最佳化方案(Oracle && PostgreSQL 效能比對)函式OracleSQL
- Spring Boot中用嵌入式PostgreSQL測試Spring BootSQL
- PostgreSQL與MySQL常用命令對照MySql
- PostgreSQLSQL
- PostgreSQL:WITHSQL
- PostgreSQL DBA(82) - PG 12 Improving COPYSQL
- PostgreSQL DBA(92) - PG 12 Improving VACUUMSQL
- PostgreSQL DBA(67) - PG 12 SQLJSON pathSQLJSON
- PostgreSQL DBA(53) - PG 12 Generated columnsSQL
- PostgreSQL DBA(37) - PG 12 REINDEX CONCURRENTLYSQLIndex
- PostgreSQL DBA(39) - PG 12 Functions for partitionsSQLFunction
- PostgreSQL DBA(36) - PG 12 Inlined WITH queriesSQLinline
- PostgreSQL 13 同步流複製(#2.4)-202104SQL