Greenplum點查(按PK查詢)效能與提升空間

德哥發表於2017-12-14

標籤

PostgreSQL , Greenplum , 點查 , 按PK查詢


背景

點查,基於PK的查詢或者OLTP類查詢,實際上並不是GPDB 擅長的,GPDB擅長的是海量的OLAP。

不過在企業、政府等視窗服務類業務,併發實際上並不高,如果GPDB的點查效能達到一定的效能時,實際上也能滿足這類場景的需求。

測試

下面是一組測試,造10億條測試資料,按PK查詢。

create table t_pk(id int primary key, info text, crt_time timestamp);  
  
postgres=# insert into t_pk select id, md5(random()::text), clock_timestamp() from generate_series(1,1000000000) t(id);  
INSERT 0 1000000000  

使用pgbench壓測,GPDB點查效能如下,達到了接近1萬TPS,實際上已經滿足大多數的企業、政府等視窗服務類業務的查詢需求。

transaction type: ./test.sql  
scaling factor: 1  
query mode: simple  
number of clients: 64  
number of threads: 64  
duration: 120 s  
number of transactions actually processed: 1076112  
latency average = 7.136 ms  
latency stddev = 16.734 ms  
tps = 8931.155844 (including connections establishing)  
tps = 8933.619173 (excluding connections establishing)  
script statistics:  
 - statement latencies in milliseconds:  
         0.002  set id random(1,1000000000)  
         7.135  select * from t_pk where id=:id;  

同一臺物理機,PostgreSQL的點查效能如下,超過了100萬tps。

transaction type: ./test.sql  
scaling factor: 1  
query mode: prepared  
number of clients: 64  
number of threads: 64  
duration: 120 s  
number of transactions actually processed: 126137940  
latency average = 0.061 ms  
latency stddev = 0.032 ms  
tps = 1051029.358638 (including connections establishing)  
tps = 1051103.770277 (excluding connections establishing)  
script statistics:  
 - statement latencies in milliseconds:  
         0.001  set id random(1,1000000000)  
         0.060  select * from t_pk where id=:id;  

當然,這裡並不是要PK的意思,只是說GPDB還有很大的提升空間。

GPDB 5.x的版本,據說點查效能已經提升到5萬+的tps了。

滿足視窗類查詢場景完全沒有問題,GPDB可以作為一個OLTP+OLAP(偏OLAP)的資料庫來使用,滿足企業、政府等視窗服務類業務,海量資料的分析與實時查詢的需求。

PG和GPDB如何選擇?

《PostgreSQL 規格評估 – 微觀、巨集觀、精準 多視角估算資料庫效能(選型、做預算不求人)》

《資料庫選型之 – 大象十八摸 – 致 架構師、開發者》

《資料庫選型思考》

《空間|時間|物件 圈人 + 透視 – 暨PostgreSQL 10與Greenplum的對比和選擇》

GPDB的寫入效能與選擇

《Greenplum insert的效能(單步批量copy) – 暨推薦使用gpfdist、阿里雲oss外部表並行匯入》


相關文章