程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 服務器進行調優的“竅門”

MySQL 服務器進行調優的“竅門”

編輯:MySQL綜合教程

以下的文章主要介紹的是對MySQL 服務器進行調優的實際操作步驟,以下就是MySQL 服務器進行調優的實際操作步驟解決方案,希望會給你帶來一些幫助在此方面。以下就是文章的具體內容描述。

如今,開發人員不斷地開發和部署使用 LAMPLinux®、apache(Unix平台最流行的WEB服務器平台)、MySQL(和PHP搭配之最佳組合) 和 PHP/Perl)架構的應用程序。但是,服務器管理員常常對應用程序本身沒有什麼控制能力,因為應用程序是別人編寫的。這份 共三部分的系列文章 將討論許多MySQL 服務器配置問題,這些配置會影響應用程序的性能。

本文是本系列文章的第三部分,也是最後一部分,將重點討論為實現最高效率而對數據庫層進行的調 優。

關於 MySQL(和PHP搭配之最佳組合) 調優

有 3 種方法可以加快 MySQL(和PHP搭配之最佳組合) 服務器的運行速度,效率從低到高依次為:

替換有問題的硬件。 對 MySQL(和PHP搭配之最佳組合) 進程的設置進行調優。 對查詢進行優化。

替換有問題的硬件通常是我們的第一考慮,主要原因是數據庫會占用大量資源。不過這種解決方案也就僅限於此了。實際上,您通常可以讓中央處理器CPU)或磁盤速度加倍,也可以讓內存增大 4 到 8 倍。

第二種方法是對 MySQL(和PHP搭配之最佳組合) 服務器也稱為 MySQL(和PHP搭配之最佳組合)d)進行調優。對這個進程進行調優意味著適當地分配內存,並讓 MySQL(和PHP搭配之最佳組合)d 了解將會承受何種類型的負載。加快磁盤運行速度不如減少所需的磁盤訪問次數。類似地,確保 MySQL(和PHP搭配之最佳組合) 進程正確操作就意味著它花費在服務查詢上的時間要多於花費在處理後台任務如處理臨時磁盤表或打開和關閉文件)上的時間。對 MySQL(和PHP搭配之最佳組合)d 進行調優是本文的重點。

最好的方法是確保查詢已經進行了優化。這意味著對表應用了適當的索引,查詢是按照可以充分利用 MySQL(和PHP搭配之最佳組合) 功能的方式來編寫的。盡管本文並沒有包含查詢調優方面的內容很多著作中已經針對這個主題進行了探討),不過它會配置 MySQL(和PHP搭配之最佳組合)d 來報告可能需要進行調優的查詢。

雖然已經為這些任務指派了次序,但是仍然要注意硬件和 MySQL(和PHP搭配之最佳組合)d 的設置以利於適當地調優查詢。機器速度慢也就罷了,我曾經見過速度很快的機器在運行設計良好的查詢時由於負載過重而失敗,因為 MySQL(和PHP搭配之最佳組合)d 被大量繁忙的工作所占用而不能服務查詢。

記錄慢速查詢

在一個 SQL 服務器中,數據表都是保存在磁盤上的。索引為服務器提供了一種在表中查找特定數據行的方法,而不用搜索整個表。當必須要搜索整個表時,就稱為表掃描。通常來說,您可能只希望獲得表中數據的一個子集,因此全表掃描會浪費大量的磁盤 I/O,因此也就會浪費大量時間。當必須對數據進行連接時,這個問題就更加復雜了,因為必須要對連接兩端的多行數據進行比較。

當然,表掃描並不總是會帶來問題;有時讀取整個表反而會比從中挑選出一部分數據更加有效MySQL 服務器進程中查詢規劃器用來作出這些決定)。如果索引的使 用效率很低,或者根本就不能使用索引,則會減慢查詢速度,而且隨著服務器上的負載和表大小的增加,這個問題會變得更加顯著。執行時間超過給定時間范圍的查 詢就稱為慢速查詢。

您可以配置 MySQL(和PHP搭配之最佳組合)d 將這些慢速查詢記錄到適當命名的慢速查詢日志中。管理員然後會查看這個日志來幫助他們確定應用程序中有哪些部分需要進一步調查。清單 1 給出了要啟用慢速查詢日志需要在 my.cnf 中所做的配置。

清單 1. 啟用 MySQL(和PHP搭配之最佳組合) 慢速查詢日志

  1. [MySQL(和PHP搭配之最佳組合)d]; enable the slow query log, 
    default 10 secondslog-slow-queries; log queries taking longer than 5 secondslong_query_time = 5; 
    log queries that don't use indexes even if they take less than long_query_time; 
    MySQL(和PHP搭配之最佳組合) 4.1 and newer onlylog-queries-not-using-indexes  

這三個設置一起使用,可以記錄執行時間超過 5 秒和沒有使用索引的查詢。請注意有關 log-queries-not-using-indexes 的警告:您必須使用 MySQL(和PHP搭配之最佳組合) 4.1 或更高版本。慢速查詢日志都保存在 MySQL(和PHP搭配之最佳組合) 數據目錄中,名為 hostname-slow.log。如果希望使用一個不同的名字或路徑,可以在 my.cnf 中使用 log-slow-queries = /new/path/to/file 實現此目的。

閱讀慢速查詢日志最好是通過 MySQL(和PHP搭配之最佳組合)dumpslow 命令進行。指定日志文件的路徑,就可以看到一個慢速查詢的排序後的列表,並且還顯示了它們在日志文件中出現的次數。一個非常有用的特性是 MySQL(和PHP搭配之最佳組合)dumpslow 在比較結果之前,會刪除任何用戶指定的數據,因此對同一個查詢的不同調用被計為一次;這可以幫助找出需要工作量最多的查詢。

以上的相關內容就是對MySQL 服務器進行調優的部分內容介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved