MySQL的配置文件my.cnf中默認存在一行skip-external-locking的參數,即“跳過外部鎖定”。根據MySQL開發網站的官方解釋,External-locking用於多進程條件下為MyISAM數據表進行鎖定。
如果你有多台服務器使用同一個數據庫目錄(不建議),那麼每台服務器都必須開啟external locking;
參數解釋
當外部鎖定(external-locking)起作用時,每個進程若要訪問數據表,則必須等待之前的進程完成操作並解除鎖定。由於服務器訪問數據表時經常需要等待解鎖,因此在單服務器環境下external locking會讓MySQL性能下降。所以在很多Linux發行版的源中,MySQL配置文件中默認使用了skip-external-locking來避免external locking。
當使用了skip-external-locking後,為了使用MyISAMChk檢查數據庫或者修復、優化表,你必須保證在此過程中MySQL服務器沒有使用需要操作的表。如果沒有停止服務器,也至少需要先運行
復制代碼 代碼如下:
mysqladmin flush-tables
命令,否則數據表可能出現異常。
參數使用說明
如果是多服務器環境,希望打開external locking特征,則注釋掉這一行即可
復制代碼 代碼如下:
# skip-external-locking
如果是單服務器環境,則將其禁用即可,使用如下語句
復制代碼 代碼如下:
skip-external-locking
注意事項
在老版本的MySQL中,此參數的寫法為:
復制代碼 代碼如下:
skip-locking
如果在新版本MySQL配置中依然使用此寫法,則可能出現:
[Warning] ‘–skip-locking' is deprecated and will be removed in a future release. Please use ‘–skip-external-locking' instead.
錯誤。