標籤:
在關聯式資料庫領域,PostgreSQL是一款非常受歡迎的開來源資料庫軟體。自1996年發布至今,已經積累了近20年的實踐經驗,不論是PostgreSQL本身還是社區生態都已經非常成熟。不僅是中小企業,很多大型的行業客戶也會使用PostgreSQL搭建自己的資料庫系統。這篇文章主要對PostgreSQL做一個介紹,並比較了在PCIe SSD(本文使用Memblaze的PBlaze4 PCIe SSD)和硬體RAID彙總的SAS磁碟兩種環境下,PostgreSQL資料庫的聯機交易處理(OLTP)的效能。
PostgreSQL及參數配置
最新的PostgreSQL基於SQL2011標準編寫,能夠實現ACID、多版本並發控制、完全串列,和複雜語句查詢等功能。此外,作為開來源資料庫,PostgreSQL還有很多第三方組織提供的外掛程式,在擴充、資料庫遷移等方面,PostgreSQL同樣具有很大的優勢。
作業系統支援方面,PostgreSQL支援Linux、FreeBSD,OS X,Solaris以及Windows等。在OS X中,PostgreSQL已經是預設的資料庫軟體(Mac OS X 10.7 Lion伺服器或者更高的版本)。主流的Linux版本也已經有相應的PostgreSQL支援包。
測試之前,我們將參數full_page_write=on,PostgreSQL伺服器在檢查點之後對頁面的第一次寫入時將整個頁面寫到 WAL 裡面。這麼做是因為當頁面寫入非易失介質的過程中,同時發生了作業系統崩潰,可能只有部分頁面寫入磁碟, 從而導致在同一個頁面中包含新舊資料的混合。如果關閉full_page_writes,在崩潰後的恢複期間, 由於在WAL裡面儲存的行變化資訊不夠完整,因此無法完全恢複該頁。儲存完整的頁面內容可以保證頁面可以正確恢複,但這樣做的缺點是增加了必須寫入WAL中的資料量,更多的讀寫操作。
測試環境介紹
BenchmarkSQL是使用Java開發的TPCC基準測試的開源應用程式,它滿足TPCC行業基準協會的要求。本次測試中的BenchmarkSQL通過類比操作人員設定了1000個倉庫,並類比了5項業務,分別為新訂單、付款、訂單狀態、發貨和庫存。
整體測試環境如下:
伺服器: Dell PowerEdge R730xd, 2 Intel XeonE5-2620(6核)v3 CPU,32GB DRAM
存放裝置 : 1 x Memblaze 1.6T PBlaze4 PCIe SSD
6* 600GB 15K + 1 * 300GB 15K HDD
LSI SAS-3 3008 RAID Fury
測試載入器:Benchmarksql 4.1.1,PostgreSQL的TPC-C測試載入器
pgcluu 2.4,PostgreSQL效能監測和稽核工具
軟體: PostgreSQL 9.2.14
CentOS 7.1
測試前提條件
在測試之前,需要考慮以下操作:
1. 確保PBlaze4的分區有4KiB對齊,分區位移量從1MiB開始。
2. 開啟irqbalance服務,並設定CPU的使用模式為最大效能模式。
3. 調整作業系統核心參數,以匹配PostgreSQL。避免使用作業系統交換功能,並調整共用記憶體參數/檔案系統髒頁參數。如下所示:
vm.swappiness=0
kernel.shmmax=21474836480
net.core.rmem_max=4194304
net.core.wmem_max=4194304
kernel.sem=50100 64128000 50100 1280
vm.dirty_background_bytes=33554432
4. 使用XFS時,PostgreSQL的預設塊大小為8KiB,但在當前Linux環境中,運行“mount xfs”會彈出“功能未實現”錯誤,因此應將塊大小調整為4KiB。分配組數量的增加意味著可分配更多並行塊和索引節點。nvme裝置分區大小為1601GB,並設定agsize=2g。設定inode64/nobarrier/nolargeio/allocsize=16M作為掛載選項。
5. 設定PostgreSQL資料庫群可以使用3/4的伺服器實體記憶體,並且設定shared_buffer=6GB,最大串連=600。
6. 在Benchmarksql工具中配置1000倉庫,並設定128個終端。
7. 預先處理PBlaze4,並確保檔案系統的可用容量低於50%。
測試結果
圖1,IOPS和頻寬在PBlaze4 PCIe SSD和RAID HDD下的表現
圖1清楚地顯示了在不同的儲存介質情況下,IOPS和資料輸送量的流量。對比測試結果,PBlaze4 PCIe SSD讀寫IOPS之和大約是RAID HDD讀寫IOPS之和的10倍,PBlaze4 PCIe SSD 讀寫輸送量之和大約是RAID HDD讀寫輸送量之和的8倍。
圖2,不同儲存介質狀態下的讀寫平均回應時間
2所示,PBlaze4 PCIe SSD在整個測試過程中保持了穩定的回應時間。
從以上結果可見,Memblaze PBlaze4 PCIe SSD在PostgreSQL資料庫聯機交易處理測試中表現了出色。
圖3,PBlaze4 PCIe SSD在測試過程中的功耗和溫度
3所示,功耗和溫度指標均證明PBlaze4 PCIe SSD具有穩定的交付狀態。
圖4,聯機交易處理總交易和新訂單指標
4所示,每分鐘處理事務總量(tpmC)包含5個事務模型。運行在PBlaze4 PCIe SSD 上的測試結果遠遠高於基於RAID HDD的測試結果。
結論
本測試清晰地顯示出運行在Memblaze PBlaze4 PCIe SSD 上得到的出色聯機事務測試結果,並且在測試過程中,PBlaze4 PCIe SSD 的功率和溫度表現穩定。對於業務類型簡單,數TiB層級的資料庫系統,使用Memblaze PBlaze4 PCIe SSD 是一個替換傳統專用儲存系統,提升效能同時大幅度降低TCO的可行方案。
本文作者
武豪,Memblaze產品部AE。長期從事儲存相關的系統整合工作,主要的研究方向包括主要研究邏輯卷、傳統儲存和關聯式資料庫的IO路徑最佳化等。
PostgreSQL介紹及PCIe SSD對其效能的提升效果分析