優化Magento MySQL的配置
Magento是一個複雜的模式和數以百計的表非常資料庫為中心的應用,使用一種被稱為建築實體的屬性值模型(EAV)。該模型使得Magento的一個非常強大的、可擴充套件的平臺,但是伺服器必須處理這些資料庫查詢優化。大多數人面臨的效能問題,事實上是通過緩慢的IO處理和低效的MySQL的配置引起的。
在你的MySQL伺服器,開啟配置檔案my.cnf。
下面我將給我的最重要的引數的建議。如果你不能找到引數已經在您的配置檔案,你可以把它下面的[mysqld]部分。
下面提供的數字是基於一個系統與8 GB RAM和CPU核心8。數字可能取決於你的特定的設定有所不同。
查詢快取
query_cache_type = 1
query_cache_size = 64M
也許最重要的是調整引數的查詢快取。
查詢快取中儲存的表連同相應的結果被髮送到客戶端。
如果一個相同的宣告是收到後,從伺服器檢索查詢快取而不是解析和執行語句的結果再次。
如果你可以查詢是否已快取避免大量昂貴的IO操作。這將對磁效能帶來很大的影響。
執行緒快取大小
thread_cache_size = 16
MySQL使用一個單獨的執行緒的每個客戶端連線。
在環境中的應用程式不附加到一個數據庫例項的執著,而是建立和關閉大量連線的每一秒,產生新的執行緒在高速率的過程可能開始消耗顯著的CPU資源。
為了減輕這種負面影響,實現 MySQL執行緒快取這使得它能夠節省,執行緒,被關閉和重用他們的新的連線。
引數 thread_cache_size 定義了許多未使用的執行緒可以在任何時候活著。
關鍵緩衝
key_buffer = 256M
關鍵緩衝區用於對於MyISAM表緩衝索引塊。
它最大限度地減少磁碟I/O的保持最頻繁訪問的記憶體中的表塊。
如Magento使用InnoDB很多其較重的資料庫表,的MyISAM關鍵緩衝效果有所降低。然而,這是一個好主意,它比預設的高一點。
表快取
table_cache = 512
MySQL的配置儲存器的一部分 表快取。table_cache有關max_connections。
例如,200併發執行的連線,你應該有一個至少200×N表快取,其中n是最大數量的表每參加任何查詢您執行。
InnoDB的具體設定
innodb_buffer_pool_size = 512 M
innodb_thread_concurrency = 8 #等於CPU核心數量
innodb_additional_mem_pool_size = 800
innodb_log_buffer_size = 4M
Magento使其大量的資料庫引擎使用InnoDB表。以上是對緩衝區的大小和儲存分配使用innodb的一些建議。
通過我們的研究,我們發現這些設定是最重要的Magento MySQL的優化。我是包括一些可值得探討的同時,與推薦值。
join_buffer_size=2m
max_heap_table_size=16m
tmp_table_size=16m
max_allowed_packet=2m
read_buffer_size=2m