Greenplum 併發效能測試
Greenplum 併發效能測試
目錄
4.2 測試4個執行緒,每個執行緒100W,每1000條提交一次 4
5.2 測試四個執行緒寫入同一個表,每個執行緒100W,1000條提交一次 7
1 叢集硬體資訊
硬體資訊請檢視以下連結
https://blog.csdn.net/xfg0218/article/details/82785196
2 測試JAVA程式碼下載
測試程式碼請下載:
連結: https://pan.baidu.com/s/1oOpPfuEDGMc9HboffH2ZGw 提取碼: saf5
參考資料:https://blog.csdn.net/dinopan/article/details/81511974
3 單表單執行緒寫入資料效能(測試案例一)
3.1 建立測試表
create table t_person4insert
(
id bigint,
name varchar(255)
)
distributed by(id);
3.2 測試100W資料,每1000條提交一次
請在程式碼中找到com.chinadaas.Person1Thread類即可測試
3.3 彙總測試結果
3.3.1 執行耗時
person cost = 2748667ms ÷ 1000 = 2748.667s
3.3.2 表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person'));
pg_size_pretty
----------------
51 MB
(1 row)
3.3.3 表的行數
stagging=# select count(*) from t_person;
count
---------
1000000
(1 row)
3.3.4 計算吐吞量
51 ÷ 2748667 × 1000 ≈ 0.0185M/S
1000000 ÷ 2748667 × 1000 ≈ 363.81行/S
4 多表多執行緒寫入資料效能(測試案例二)
4.1 建立測試表
create table t_person4insert1
(
id bigint,
name varchar(255)
)
distributed by(id);
create table t_person4insert2
(
id bigint,
name varchar(255)
)
distributed by(id);
create table t_person4insert3
(
id bigint,
name varchar(255)
)
distributed by(id);
create table t_person4insert4
(
id bigint,
name varchar(255)
)
distributed by(id);
4.2 測試4個執行緒,每個執行緒100W,每1000條提交一次
請在程式碼中找到com.chinadaas.Person4Thread類即可測試
4.3 彙總測試結果
4.3.1 執行耗時
四個執行緒整體的耗時為:3240611ms ≈ 3240 s
4.3.2 表的大小
4.2.2.1檢視第一張表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person4insert1'));
pg_size_pretty
----------------
51 MB
(1 row)
4.2.2.2檢視第二張表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person4insert2'));
pg_size_pretty
----------------
51 MB
(1 row)
4.2.2.3檢視第三張表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person4insert3'));
pg_size_pretty
----------------
51 MB
(1 row)
4.2.2.4檢視第四張表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person4insert4'));
pg_size_pretty
----------------
51 MB
(1 row)
Time: 31.728 ms
4.3.3 表的行數
4.3.3.1 檢視第一個表的行數
stagging=# select count(*) from t_person4insert1;
count
---------
1000000
(1 row)
Time: 66.177 ms
4.3.3.2 檢視第二個表的行數
stagging=# select count(*) from t_person4insert2;
count
---------
1000000
(1 row)
Time: 39.403 ms
4.3.3.3 檢視第三個表的行數
stagging=# select count(*) from t_person4insert3;
count
---------
1000000
(1 row)
Time: 39.403 ms
4.3.3.4 檢視第四個表的行數
stagging=# select count(*) from t_person4insert4;
count
---------
1000000
(1 row)
Time: 70.558 ms
4.3.4 計算吞吐量
51 ÷ 3240611 × 1000 ≈ 0.0157M/S
1000000 ÷ 3240611 × 1000 ≈ 308.58行/S
4.4 總結結果
以下是單執行緒結果
51 ÷ 2748667 × 1000 ≈ 0.0185M/S
1000000 ÷ 2748667 × 1000 ≈ 363.81行/S
以下是多執行緒結果
51 ÷ 3240611 × 1000 ≈ 0.0157M/S
1000000 ÷ 3240611 × 1000 ≈ 308.58行/S
四個執行緒的吞吐量比單執行緒慢了很多
5 單表多執行緒寫入資料效能(測試案例三)
5.1 建立測試表
create table t_person4insertrange
(
id bigint,
name varchar(255)
)
distributed by(id);
5.2 測試四個執行緒寫入同一個表,每個執行緒100W,1000條提交一次
請在程式碼中找到com.chinadaas.PersonRangegThread類即可測試
5.3 彙總測試結果
5.3.1 執行耗時
total cost = 3164341ms ≈ 3164s
5.3.2 表的大小
stagging=# select pg_size_pretty(pg_relation_size('t_person4insertrange'));
pg_size_pretty
----------------
200 MB
(1 row)
Time: 7.443 ms
5.3.3 表的行數
stagging=# select count(*) from t_person4insertrange;
count
---------
4000000
(1 row)
Time: 162.728 ms
5.3.4 計算吞吐量
200 ÷ 3164341 × 1000 ≈ 0.063M/S
4000000 ÷ 3164341 × 1000 ≈ 1264行/S
6 測試總結
在以上的結果中可以看出使用多執行緒寫入單個表的速度還是可以的,達到1264行/S
7 TCP-H測試結果
詳細的測試結果請檢視:
https://blog.csdn.net/xfg0218/article/details/82785187