資料庫讀寫效能分析
1、 單機模擬集群測試
測試環境:
由3臺伺服器組成的hadoop集群組成分布式檔案系統
由一台單獨的機器單機模擬hbase集群
由一台機器單機測試mysql
測試規模:50萬條記錄以上,單執行緒、多執行緒測試
測試結果:
hbase
mysql
單執行緒插入 100 條記錄
155 ms / 154ms
243 ms / 198ms
插入 1000 條記錄
740 ms / 884ms
1506 ms / 1554ms
插入 10000 條記錄
8304ms/ 6610ms
14110ms/ 12839m
插入 100000 條記錄
43090ms /64715ms
108082ms /110664ms
讀取 500000左右的條記錄
640 ms / 721ms
2779 ms / 2794ms?
100執行緒
插入 100 條記錄
5929ms / 3825ms / 4134ms
15352ms / 12912ms / 12853ms
插入 1000 條記錄
35684ms / 52677ms / 34208ms
135839ms / 161711ms / 119909ms
讀取 500000左右的條記錄
最快的 1104 ms/最慢的 110897 ms
如果不加limit,資料庫連線超時
1000執行緒
插入 100 條記錄
325907ms / 322465ms / 342163ms
17455ms / 18953ms / 15169ms
讀取500000左右的條記錄
最快的 717 ms
如果不加limit,資料庫連線超時
hbase不同於一般的關聯資料庫,它是乙個適合於非結構化資料儲存的資料庫.另乙個不同的是hbase基於列的而不是基於行的模式(字段內容都是char).
上面兩種 特性,導致hbase的資料表結構非常鬆散,字段內容單一,表與表之前沒有任何關聯,正因為這樣在查詢的時候效率非常高
hbase資料表的效能選項:
max_versions:每乙個單元儲存多少版本的資料(預設是3)
max_length:每個單元中的版本能夠儲存多少位元組的資料(預設位元組數是32比特有符號整數最大值)
compression:資料壓縮,有block壓縮和record壓縮
in_memory:將這個列組裝載資料到儲存器,加快讀寫速度,缺點耗費儲存器和干預hdfs的備份
bloomfilter:如果這個列組支援布隆過濾器(bloomfilter),那麼在儲存器中有個索引來快速地判斷要查詢的列是否存在這個行中,減少磁碟io操作.如
果在這個列組你擁有大量的列,每乙個列的資料報含的資料非常小,你可能需要在這個列組中應用布隆過濾器(bloomfilter)
2、 列族測試:
測試目標:測試列族增長對效能的影響
測試資料:建表時候定義列族數量,每個列族寫入1000位元組資料,讀取5000次,隨機讀取任意一列。
測試結果:
單機集群
列族數量
10
100
500
1000
建表時間
12.3
19.2
45.9
timeout
每秒寫入
164
323
419
timeout
每秒讀取
99
139
122
timeout
5機器集群
列族數量
10
100
500
1000
建表時間
12.2
18.7
46.4
timeout
每秒寫入
29
153
376
timeout
每秒讀取
119
111
120
timeout
測試結論:
hbase建表時間過長,對大列族的時候支援不好
寫入速度在多機集群的時候提高較快
3、排序測試
測試目標:hbase的行排序是根據主鍵排序,測試動態或者反序插入時候的效能。
測試資料:動態生成字母資料,zzzzz-aaaaa,還有隨機插入
測試結果:
單機集群(每秒多少行)
寫入行
10,000
100,000
1,000,000
順序
485
432
334
反序
451
477
354
隨機
462
421
334
5機集群(每秒多少行)
寫入行
10,000
100,000
1,000,000
順序
488
440
346
反序
522
387
343
隨機
468
441
370
測試結論:
採用b樹儲存和寫入快取,寫入數量和順序對速度影響並不大,應該只是cpu占用的不同。
主要瓶頸還是在網路傳輸速度上。
io對比分析
1 同步阻塞io 使用者執行緒通過系統呼叫read發起io讀操作,由使用者空間轉到核心空間。核心等到資料報到達後,然後將接收的資料拷貝到使用者空間,完成read操作。使用者執行緒使用同步阻塞io模型的偽 描述為 2同步非阻塞io 使用者執行緒系統系統呼叫read 後直接返回,然後通過不斷輪訓的方式,...
開源License對比分析
bsd開源協議 original bsd license freebsd license original bsd license bsd開源協議是乙個給於使用者很大自由的協議。基本上使用者可以 為所欲為 可以自由的使用,修改源 也可以將修改後的 作為開源或者專有軟體再發布。但 為所欲為 的前提當你...
開源License對比分析
bsd開源協議 original bsd license freebsd license original bsd license bsd開源協議是乙個給於使用者很大自由的協議。基本上使用者可以 為所欲為 可以自由的使用,修改源 也可以將修改後的 作為開源或者專有軟體再發布。但 為所欲為 的前提當你...