Mysql

MySQL 性能調整

  • December 17, 2010

我正在尋找用於調整用於中型網站的 MySQL 伺服器的常見陷阱和優化的簡潔列表。

一般來說,我在這裡尋找的建議類型是普通開發人員或管理員可以輕鬆實施的資訊,這些資訊將為他的網站性能帶來可衡量的好處。

舉個例子

這是我從閱讀高性能 MySQL中獲得的一個技巧,我經常看到它用於:

當使用 MyISAM 儲存引擎(預設)時,伺服器將在執行 DELETE 或 UPDATE 操作時鎖定整個表,或者在執行未附加到表末尾的 INSERT 時(因為有一個“洞”從以前的刪除)。在操作完成之前,沒有其他查詢可以使用該表。

因此,如果使用“INSERT”以外的任何操作看到大量修改,則應該在任何頻繁使用的表上使用 InnoDB 或其他行級鎖定引擎。

以下是我在 MySQL 優化中遇到的一些問題:

如果您看到您的數據庫伺服器(尤其是 MySQL 程序)正在使用大部分 CPU 時間,則可能意味著您缺少索引或需要優化查詢。

打開慢查詢日誌並跟踪這些慢查詢以了解如何優化它們。對慢查詢使用“解釋”來找出它們慢的原因。MySQL 文件有幾個部分介紹瞭如何解釋這些結果。

使用 memcached 盡可能長時間地記憶體任何查詢的結果。這是非常快的,並且能夠記憶體內部 MySQL 查詢記憶體無法記憶體的許多內容,但只能在您知道數據可以長期記憶體或手動使記憶體過期的情況下使用。

在數據庫系統上設置“munin”以開始收集有關係統使用率和數據庫查詢負載的資訊。

確保您的系統有足夠的 RAM 不會交換,並且如果有任何磁碟讀取(使用 vmstat 或 munin 來監控這一點),請確保您的系統也有足夠的 RAM。這意味著數據是從 MySQL 或磁碟緩衝區記憶體中提供的。

引用自:https://serverfault.com/questions/61829