PHPCMS用哪個資料庫比較好?
PHPCMS用MySQL資料庫比較好,因為PHPCMS是使用PHP進行寫的,而PHP對MySQL支援比較好,所以建議使用MySQL,而這個資料庫是一種開放原始碼的關聯式資料庫管理系統。
MySQL 最佳化
選擇InnoDB作為儲存引擎
大型產品的資料庫對於可靠性和並發性的要求較高,InnoDB作為預設的MySQL儲存引擎,相對於MyISAM來說是個更佳的選擇。
優化資料庫結構
組織資料庫的schema、表格和欄位以降低I/O的開銷,將相關項目保存在一起,並提前規劃,以便隨著資料量的增長,性能可以保持較高的水平。
設計資料表應盡量使其佔用的空間最小化,表的主鍵應盡可能短。 ·對於InnoDB表,主鍵所在的列在每個輔助索引條目中都是可複製的,因此如果有很多輔助索引,那麼一個短的主鍵可以節省大量空間。
只建立你需要改進查詢效能的索引。索引有助於檢索,但是會增加插入和更新操作的執行時間。
InnoDB的ChangeBuffering特性
InnoDB提供了changebuffering的配置,可減少維護輔助索引所需的磁碟I/O。大規模的資料庫可能會遇到大量的表格操作和大量的I/O,以確保輔助索引保持最新。當相關頁面不在緩衝池裡面時,InnoDB的changebuffer將會更改快取到輔助索引條目,從而避免因無法立即從磁碟讀取頁面而導致耗時的I/O操作。當頁面被載入到緩衝池時,緩衝的變更將被合併,更新的頁面之後會刷新到磁碟。這樣做可提高效能,適用於MySQL5.5及更高版本。
InnoDB頁面壓縮
InnoDB支援對資料表進行頁面層級的壓縮。當寫入資料頁的時候,會有特定的壓縮演算法對其進行壓縮。壓縮後的資料會寫入磁碟,其打孔機制會釋放頁面末端的空區塊。如果壓縮失敗,資料會按原樣寫入。表和索引都會被壓縮,因為索引通常是資料庫總大小中佔比很大的一部分,壓縮可以顯著節約內存,I/O或處理時間,這樣就達到了提高性能和伸縮性的目的。它還可以減少記憶體和磁碟之間傳輸的資料量。 MySQL5.1及更高版本支援此功能。
注意,頁面壓縮並不能支援共享表空間中的表。共享表空間包括系統表空間、臨時表空間和常規表空間。
使用批次資料匯入
在主鍵上使用已排序的資料來源進行大量資料的匯入可加快資料插入的過程。否則,可能需要在其他行之間插入行以維護排序,這會導致磁碟I/O變高,進而影響效能,增加頁的分割。關閉自動提交的模式也是有好處的,因為它會為每個插入執行日誌刷新到磁碟。在批次插入期間暫時轉移唯一鍵和外鍵檢查也可顯著降低磁碟I/O。對於新建的表,最好的做法是在批次匯入後建立外鍵/唯一鍵約束。
一旦你的資料達到穩定的大小,或是成長的表增加了幾十或幾百兆位元組,就應該考慮使用OPTIMIZETABLE語句重新組織表並壓縮浪費的空間。對重新組織後的表進行全表掃描所需的I/O會更少。
優化InnoDB磁碟I/O
增加InnoDB緩衝池大小可以讓查詢從緩衝池存取而不是透過磁碟I/O存取。透過調整系統變數innodb_flush_method來調整清除緩衝的指標使其達到最佳水準。
MySQL的記憶體分配
在為MySQL分配足夠的記憶體之前,請先考慮不同領域對MySQL的記憶體需求。要考慮的關鍵領域是:並發連接——對於大量並發連接,排序和臨時表將需要大量記憶體。在撰寫本文時,對於處理3000 並發連接的資料庫,16GB到32GB的RAM是足夠的。
記憶體碎片可以消耗大約10%或更多的記憶體。像是innodb_buffer_pool_size、key_buffer_size、query_cache_size等快取和緩衝區要消耗大約80%的已分配記憶體。
日常維護
定期檢查慢的查詢日誌並最佳化查詢機制以有效使用快取來減少磁碟I/O。最佳化它們,以掃描最少的行數,而不是進行全表掃描。
其他可以幫助DBA檢查和分析效能的日誌包括:錯誤日誌、常規查詢日誌、二進位日誌、DDL日誌(元資料日誌)。
定期刷新快取和緩衝區以降低碎片化。使用OPTIMIZETABLE語句重新組織表格並壓縮任何可能被浪費的空間。
以上是PHPCMS用哪個資料庫比較好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!