至今為止,我在固態硬盤 (SSD) 上成功運行主 Informix 開發數據庫服務器的時間已經超過一年。我的開發服務器配備 12 枚 CPU 內核、24 GB 的 RAM、5 TB 磁盤空間和一塊 512 GB 的固態硬盤。我使用這臺服務器開發了 Informix 數據倉庫項目,并對 OLTP 版本執行
至今為止,我在固態硬盤 (ssd) 上成功運行主 informix 開發的時間已經超過一年。我的開發配備 12 枚 cpu 內核、24 gb 的 ram、5 tb 磁盤空間和一塊 512 gb 的固態硬盤。我使用這臺服務器開發了 informix 數據倉庫項目,并對 oltp 版本執行了基準測試。去年購買這臺服務器之后,我開始嘗試使用 ssd。我將主 informix 空間從一對鏡像的磁盤驅動器遷移到了 ssd。我對兩個 informix 服務器都執行了測試:一個是 11.50 版本,另一個是 11.70 版本。兩個版本在 ssd 上運行時的速度都有所提升。我使用了到數據庫空間的鏈接,因此可以將空間在常規磁盤驅動器與 ssd 之間來回復制、重置鏈接并啟動服務器,以便測試性能。ssd 的性能要好得多,我完全不希望再回頭使用舊的磁盤驅動器。ssd 的穩定性非常出色,所以我推薦對關鍵生產系統使用 ssd。
多年以來,磁盤驅動器一直是數據庫性能瓶頸。磁盤空間越來越大,人們不斷在其中存儲越來越多的數據,但磁盤驅動器的速度并沒有提升。隨著磁盤中數據量的增加,吞吐量也成為嚴重問題。典型情況下,加速磁盤 I/O 的最好方法就是將數據分布到多塊磁盤驅動器上,在每個磁盤中都存儲較少的數據庫。SSD 改變了一切,我認為磁盤驅動器將來會像磁帶驅動器一樣走向沒落。所有人都會在 SSD 上運行程序,磁盤驅動器將僅用作備份介質。在筆記本電腦、臺式機和服務器數列中,SSD 的出現頻率越來越高。
混合磁盤系統是一種有趣的發明,它將 SSD 與傳統硬盤結合使用。部分供應商提供的數列將 SSD 作為一批傳統磁盤驅動器的智能緩存。其思路在于,將所有數據頁面都存儲在傳統磁盤驅動器中,而最常用的數據頁面則緩存在 SSD 中。我的一位客戶使用此類數列獲得了極大的成功,實現了顯著的性能提升。其他混合趨勢包括將 SSD 直接與大容量磁盤驅動器配對,將它們作為磁盤緩存。Seagate 和 OCZ 均推出了混合式磁盤驅動器或磁盤卡。雖然混合的方法能提高性能,但不如純 SSD 速度快。我認為這只是一些臨時措施,最終 SSD 的成本將降低,性價比也將提高。隨著 SSD 產量的增加,成本的降低,混合方法將不再必要。
設置基準測試
為了撰寫這篇文章,我決定從頭開始,執行基準測試來測量 SSD 能提供的性能改進。我想執行壓力測試,測量順序讀取、批量順序讀取和隨機讀取與寫入的性能。我重新安裝了最新版本的 Informix 11.70 FC4,用全新的安裝和腳本從頭開始制作我的 Informix 環境。每次測試都使用相同的 ONCONFIG 文件,我通過更改 Informix 磁盤空間的鏈接在傳統磁盤驅動器與 SSD 之間切換。我使用的傳統磁盤驅動器是當今大多數生產系統中常見的高速鏡像對。圖 1 的表格中顯示了結果。
基準測試 | 鏡像磁盤設備 | SSD 磁盤設備 | 提高的百分比 |
1. 配置 Dbspace 和日志 | 47 分鐘 24.986 秒 | 30 分鐘 38.419 秒 | 64.60 |
2. 導入數據庫 | 82 分鐘 18.984 秒 | 67 分鐘 40.300 秒 | 82.20 |
3. 基準測試 2:批量計費作業 | 3 分鐘 21.258 秒 | 2 分鐘 35.227 秒 | 77.11 |
4. 基準測試 4:具有 1,000 個用戶的 OLTP | 5,272 tpmC | 116,849 tpmC | 2,216.41 |
5. 數據倉庫查詢基準測試 | 4 小時 19 分鐘 | 3 小時 14 分鐘 | 74.90 |
平均總體提高 | ? | ? | 503.05 |
圖 1:SSD 與 磁盤驅動器基準測試結果對比
下面介紹了各基準測試的測試任務。
1. 配置 Dbspace 和日志 第一項測試測量創建所有 dbspace 和所有邏輯日志花費的時間,并將物理日志移動到獨立的 dbspace 中,然后重建基準測試環境。將 Informix 設置為執行直接 I/O,并在兩項測試中使用成熟的文件。過去,我直接在 SSD 與傳統磁盤驅動器之間復制 dbspace;這次測試在兩個系統中重建了整個環境。
2. 導入數據庫 下一項任務是執行各配置中使用的各數據庫的 dbimport。該任務將對驅動器的寫入性能執行壓力測試。
3. 基準測試 2:批量計費作業 2009 年,IIUG Informix User Conference 的 Fastest DBA 大賽中執行的就是這項基準測試——過去,我曾在文章中介紹過這一基準測試。測試的目標是磁盤 I/O,因此我并未優化 SQL 來減少讀寫數量。
4. 基準測試 4:具有 1,000 個用戶的 OLTP 這是 2011 IIUG Informix User Conference 的 Fastest Informix DBA 大賽中使用的基準測試。Advanced DataTools 為大賽提供贊助,尋找和獎勵速度最快的 Informix DBA。此次大賽是過去三屆 Informix 會議中最有趣的活動之一。 測試使用 Open Source BenchmarkSQL Java 程序,生成了 1,000 個會話,對一個 Informix 數據庫執行插入、更新和刪除操作。Open Source BenchmarkSQL 是一項 JDBC 基準測試,與 TPC-C 的 OLTP 標準極其接近。在大賽中,參賽者需要處理運行 1,000 個 OLTP 用戶的 Informix 服務器,在一個小時內對其進行優化,然后評選出誰能實現最高的每分鐘事務處理量。由于這屬于執行讀取和寫入操作的隨機 I/O 測試,因此會對磁盤驅動器的隨機 I/O 功能進行壓力測試。SSD 在這次測試中表現最佳,每分鐘執行的事務處理量是傳統磁盤驅動器的 2,216%。
5. 數據倉庫查詢基準測試 這是我開發的一個新基準測試,用于測試數據倉庫性能。SSD 容量最高為 512 GB,因此我使用一個較小的數據庫,運行了 18 個復雜的數據倉庫查詢。大多數查詢需要對一個事實表進行順序掃描,以獲得相關結果,因此可以通過該操作對驅動器的讀取訪問進行壓力測試。
關鍵考慮事項
在將 Informix dbspace 遷移到 SSD 的過程中,您還需要考慮可能存在磁盤 I/O 瓶頸的其他方面。在數據倉庫基準測試中,我初次遷移到 SSD 時并未如期獲得出色的性能。受磁盤 I/O 性能影響的另外兩個因素是查詢報告的臨時排序空間和輸出空間。將報告的臨時空間和輸出空間遷移到 SSD 之后,性能獲益非常明顯。實際上,將 Informix temp dbspace 遷移到 SSD 或許是利用這項新技術的最快方法,同時還能保證不需要重新配置整個服務器。
我與其他管理大型圖像處理系統(例如影片制作)的管理員討論了 SSD 技術。這些系統需要接近實時地訪問龐大的圖像文件。這些管理員已經成功構建了包含 6 到 8 塊 SSD 的 RAID-10 數列。根據他們的報告,RAID-10 的數據鏡像與條帶化能夠提高安全性,還能提高 SSD 原本已經非常出眾的性能。我非常希望使用 Informix 數據庫親身體驗一下這樣的改進。
有關 SSD 的擔憂之一就是其作為新技術的可靠性。對我來說,一塊 SSD 使用了整整一年,而且完全沒有出現過任何問題。而在相同的時間段內,我的三塊普通硬盤都發生了故障。任何介質都必然會發生故障,因此最好始終計劃備份解決方案。所有磁盤驅動器都需要定期備份。如果我使用 SSD 設計一個新的生產級 Informix 數據庫服務器,我會在常規磁盤驅動器上創建一個 Informix 高可用性遠程輔助服務器 (RSS) 作為備用系統。這是任何生產數據庫服務器的最佳實踐。
結束語
在所有數據庫中,SSD 都能更快地完成 Informix 數據庫任務。在順序掃描、隨機 I/O 和讀取與寫入中,SSD 的表現始終遙遙領先。SSD 極大地提升了 OLTP 隨機磁盤 I/O 基準測試的性能。圖 1 中的數字能證明一切。一言以蔽之,提高 Informix 數據庫服務器速度最便捷的方法就是將 dbspaces 遷移到 SSD 中。Informix 在 SSD 上的運行表現良好。