1 測試主體
本次測試的主體有3個,分別為:
- GreenPlum集群,下文簡稱為GP
- Postgres-XC集群,下文簡稱為XC
- Postgresql單數據庫實例,下文簡稱為pgsql
GP和XC都選用目前在互聯網上可以下載到的最新版本。不同集群所基於的postgresql數據庫版本不同,並且,postgis的版本也不相同。版本說明見下表:
| 測試主體 |
版本 |
Postgresql版本 |
Postgis版本 |
| GP |
4.3.8.2 |
8.2.15 |
2.0 |
| XC |
1.0.4 |
9.1.13 |
2.1 |
| pgsql |
9.1.13 |
9.1.13 |
2.1 |
所有的環境均搭建在7層機房6台(編號1-6)1U的服務器上,各台服務器的配置如下:
| 參數項 |
配置 |
| CPU |
32核 |
| 內存 |
64G |
| 磁盤 |
4塊7200轉SATA,未做RAID |
| 網絡 |
4塊千兆網卡,1和2作MODE=2的綁定,3和4各連一個交換機,各組一個局域網 |
GP集群采用1個master(運行在編號1的服務器/dev/sda上),6個segment host(對應編號1-6的服務器)的組織方式,每個segment host啟動3個實例,分別位於不同的物理磁盤上(/dev/sdb 、/dev/sdc 、/dev/sdd)。
XC集群采用1個gtm(運行在編號1的服務器上),1個gtm_standy(運行在編號1的服務器上),4個gtm_proxy(對應編號3-6的服務器),4個coordinator(對應編號3-6的服務器),4個datanode(對應編號3-6的服務器)的組織方式。coordinator運行於/dev/sda,datanode運行於/dev/sdb。
Pgsql采用XC集群中編號3服務器上運行的datanode。
2測試目標
測試並對比三個測試主體的入庫、查詢性能。
3測試方法
本次測試使用了三個測試工具:
- 使用pgbench測試不同壓力條件下,復雜面狀要素的入庫效率
- 使用org2ogr測試不同客戶端連接數條件下,fgdb文件的入庫效率。fgdb有要素1178840條,820M。
- 使用tpc-H測試固定大小非空間數據的入庫效率
- 使用tpc-H測試復雜查詢的查詢效率
4測試結果
4.1 pgbench測試結果
| 測試主體 |
連接數 |
3分鍾插入記錄數 |
每秒事務數 |
| XC |
1 |
7581 |
42 |
| 4 |
15535 |
86 |
|
| 12 |
27371 |
152 |
|
| 24 |
43422 |
241 |
|
| 2*24 |
70588 |
195 |
|
| 4*24 |
84000 |
118 |
|
| GP |
1 |
1050 |
6 |
| 4 |
2757 |
15 |
|
| 12 |
3740 |
20 |
|
| 24 |
4040 |
22 |
|
| 48 |
4039 |
22 |
|
| pgsql |
1 |
13140 |
73 |
| 4 |
21537 |
119 |
|
| 12 |
20944 |
116 |
|
| 24 |
21366 |
117 |
4.2 ogr2ogr測試結果
| 測試主體 |
org2ogr進程數 |
總耗時(unit=m) |
| XC |
2 |
34 |
| 4 |
34 |
|
| 8 |
32 |
|
| 16 |
32 |
|
| 32 |
35 |
|
| 40 |
36 |
|
| 40+32+32 |
50 |
|
| 40+30+30+30 |
61 |
|
| pgsql |
2 |
25 |
| 4 |
25 |
|
| 8 |
23 |
|
| 16 |
23 |
|
| 32 |
35 |
|
| 40 |
55 |
|
| GP |
4 |
57 |
| 8 |
61 |
|
| 20 |
120 |
|
| 40 |
150 |
4.3 tpc-H入庫測試結果
使用tpc-H將8張總大小為200G,總記錄數約1.7億的數據入庫。耗時情況如下:
| XC(unit=m) |
GP(m) |
Pgsql(m) |
|
| 耗時 |
8.05 |
6.8 |
21.9 |
4.4 tpc-H 查詢測試結果
| 查詢SQL編號 |
XC(unit=s) |
GP(s) |
pgsql(s) |
| 1 |
timeout |
14 |
timeout |
| 3 |
123 |
18 |
57 |
| 4 |
144 |
1 |
17 |
| 6 |
3 |
1 |
12 |
| 7 |
228 |
18 |
64 |
| 8 |
110 |
5 |
39 |
| 10 |
timeout |
1 |
76 |
| 11 |
27 |
1 |
22 |
| 12 |
22 |
1 |
38 |
| 14 |
timeout |
1 |
13 |
| 15 |
1 |
1 |
28 |
| 16 |
21 |
5 |
37 |
| 17 |
23 |
51 |
1 |
| 18 |
18 |
5 |
191 |
| 19 |
timeout |
6 |
40 |
| 20 |
3 |
1 |
timeout |
5測試結論
- 可能是postgis版本較低的原因,GP處理空間數據的效率不高。正如4.1與4.2中所反映,入矢量數據效率較低。XC處理空間數據的性能要優於GP。
- 對於小事務的擴展能力,XC的性能最好。這得宜於它的架構支持多個coordinator,使得將客戶連接負載均衡到不同的協調器中;
- GP作為決策支持型數據庫,對於大數據量的查詢分析,效率很高;
- 如果事務數非常少(以本例來看,在小於20-30的情況下),集群的性能不如單機的性能;
