1.沒有兩個資料庫或應用程式是完全相同的。這裡假設我們要調整的資料庫是為一個「典型」的 Web 網站服務的,優先考慮的是快速查詢、良好的使用者體驗以及處理大量的流量。
2.在你對伺服器進行最佳化之前,請做好資料庫備份!
本文主要為大家帶來了優化 MySQL 3 個簡單的小調整,需要的朋友參考下,希望能幫助大家。
1、 使用 InnoDB 儲存引擎
如果你還在使用 MyISAM 儲存引擎,那麼是時候轉換到 InnoDB 了。有很多的理由都表明InnoDB 比MyISAM 更有優勢,如果你關注性能,那麼,我們來看看它們是如何利用物理記憶體的:
MyISAM:僅在記憶體中保存索引。
InnoDB:在記憶體中保存索引和資料。
結論:儲存在記憶體的內容存取速度要比磁碟上的更快。
下面是如何在你的表上去轉換儲存引擎的命令:
ALTER TABLE table_name ENGINE=InnoDB;
注意:你已經創建了所有合適的索引,對嗎?為了更好的效能,創建索引永遠是第一優先考慮的事情。
2、 讓 InnoDB 使用所有的記憶體
你可以在 my.cnf 檔案中編輯你的 MySQL 設定。使用 innodb_buffer_pool_size 參數去配置在你的伺服器上允許 InnoDB 使用實體記憶體數量。
對此(假設你的伺服器只運行 MySQL),公認的「經驗法則」是設定為你的伺服器實體記憶體的 80%。在確保作業系統不使用交換分割區而正常運作所需的足夠記憶體之後 ,盡可能為 MySQL 分配實體記憶體。
因此,如果你的伺服器實體記憶體是 32 GB,可以將那個參數設定為多達 25 GB。
innodb_buffer_pool_size = 25600M
*注意:(1)如果你的伺服器記憶體較小且小於 1 GB。為了適用本文的方法,你應該去升級你的伺服器。 (2) 如果你的伺服器記憶體特別大,例如,它有 200 GB,那麼,根據一般常識,你也沒有必要為作業系統保留多達 40 GB 的記憶體。 *
3、 讓 InnoDB 多任務執行
如果伺服器上的參數 innodb_buffer_pool_size 的配置是大於 1 GB,將根據參數 innodb_buffer_pool_instances 的設定,將 InnoDB 的緩衝池劃分為多個。
擁有多於一個的緩衝池的好處有:
在多執行緒同時存取緩衝池時可能會遇到瓶頸。你可以透過啟用多重緩衝池來最小化這種爭用情況:
對於緩衝池數量的官方建議是:
為了實現最佳的效果,要綜合考慮innodb_buffer_pool_instances 和innodb_buffer_pool_size的設置,以確保每個實例至少有不小於1 GB 的緩衝池。
因此,在我們的範例中,將參數 innodb_buffer_pool_size 設定為 25 GB 的擁有 32 GB 實體記憶體的伺服器上。一個合適的設定為 25600M / 24 = 1.06 GB
innodb_buffer_pool_instances = 24
注意!
在修改了my.cnf 檔案後需要重啟MySQL 才能生效:
sudo service mysql restart
還有更多更科學的方法來最佳化這些參數,但這幾點可以作為一個通用準則來應用,將使你的MySQL 伺服器效能更好。
相關推薦:
修改Innodb的資料頁大小以最佳化MySQL的方法實例詳解
#以上是3 個簡單優化MySQL的小方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!