用於高容量、高 qps 的最佳數據庫和文件系統
我正在考慮為非常大量的非營利情況建立一個數據庫,這也將受益於高速更新和搜尋。
每個交易記錄相對較小(基本客戶資訊加上 10-12 個額外欄位),但必須通過不同的更新、報告和螢幕更新/修改數千次。(但我不需要每次更新的記錄,除了恢復。)
MYSQL 最適合這個嗎?什麼文件系統最有效?
謝謝。
G
幾乎任何數據庫伺服器都可以滿足您的需求,無論是 MySQL、Microsoft SQL Server、Oracle 等。所有 rdbms 的性能根據以下標準變化很大
- 磁碟的 I/O 性能(通過高吞吐量連接獲得良好、快速、RAID 的磁碟)
- 性能和 RAM 量(良好和快速的 RAM,還有很多)
- 文件系統成本(使用為數據庫設計的現代 fs。Ext4 工作正常,但有 OCFS2 是 Oracle 的文件系統,專為數據庫建構,甚至是 Oracle 的 RAW 儲存,在作業系統意義上甚至沒有文件系統。 . 數據庫完全管理磁碟。)
- 正確索引的表結構(快速訪問數據取決於您的數據是否被正確索引,其中“正確”意味著最有效地滿足您的所有需求。)
- 適當優化的查詢…通常與正確的索引一起使用;數據庫可以嘗試為您的查詢找出最佳優化,但它只能使用正確的索引和統計資訊來做到這一點。更好的是,微調你的查詢,這樣數據庫就不必自己做很多優化,你會更快更快樂。
- 網路的 I/O 性能 - 如果您要傳入或傳出大量數據,網路性能將很重要(否則數據庫在通過線路發送數據時必須等待)。
一些真正無關緊要的事情(就性能而言):
- 您的作業系統。Windows、Mac OSX、Linux 和其他任何現代的東西都可以作為作業系統層。無論如何,您的大部分工作都是在數據庫中完成的,偶爾需要在作業系統中完成任務。選擇一個可以簡化您的生活(而不是使其複雜化)的作業系統,但現代數據庫在大多數作業系統上都可以執行。
- 您的數據庫引擎。是的,MySQL 和 Oracle 以及 MS SQL 等之間存在關鍵差異。這真的很重要嗎?如果您必須擁有某個**特定的功能,那麼無論如何都去爭取它,但最終,只要正確配置了硬體和表格,一切就足夠了。
真的,選擇一個數據庫、一個作業系統、一個文件系統,然後建構你的應用程序。有了良好的硬體和良好的表設計(帶有索引和優化),事情應該會順利進行。
**說了這麼多,**這就是我要選擇的(只是因為我最熟悉這種類型的配置):
- RHEL / OEL / Ubuntu (作業系統)
- Oracle Standard One(或 Standard,或 EE,取決於您的需要)(DB)
- Ext4 日誌文件系統 (FS)
- 2 個 2xCore 處理器 (>2.5GHz)
- 8 GiB 記憶體(大約 1066 或更快的 MHz)
- 1 TiB 硬碟(SATA,>=7200rpm)
- 至少千兆乙太網
根據需要交換作業系統、文件系統和數據庫。你的機器應該尖叫並且對於大量數據庫來說很好,並且可能有點矯枉過正。不過,最好的事情是,如果您需要更多,您可以隨時添加記憶體和磁碟空間併升級您的處理器。如有必要,請移至新框或添加框(如果您的數據庫支持)。(更好的是:將您的環境作為虛擬機/集群執行。然後移動到另一台物理機是小菜一碟。)
資料不夠。。
當您說“數千次”時,是每週還是每秒?
如果每秒,那麼您使用的堆棧(OS,DB)無關緊要。這都是關於日誌的良好 IO。例如固態硬碟。以及設計+程式碼質量。
如果每週,請考慮您的最大尺寸。<10GB?然後查看適用於 Windows 的 SQL Server Express。或用於非 Windows 的 Postgres。
而“非營利”的意思是“便宜”。在這種情況下,您真的必須使用 Linux+Postgres,除非您因為已經是 Windows 商店而需要承擔培訓或支持成本。但是“便宜”達到了“選擇快速、便宜和好中的任何 2 個”的限制(好是這裡的大小限制)。
不過我會遠離 MySQL:與其他流行的系統(SQL Server、Oracle、Postgres,甚至 DB2 和 Sybase)相比,IMO 有太多的怪癖