MySQL調(diào)優(yōu)的正確操作方案
以下的文章主要介紹的是MySQL調(diào)優(yōu)的實(shí)際操作步驟,我們首先是從提高 MySQL(與PHP搭配之***搭檔) 服務(wù)器的實(shí)際運(yùn)行速度開始的,一共有三 種方法能提高 MySQL(和PHP搭配之***組合) 服務(wù)器的運(yùn)行速度,效率從低到高依次為:
1、替換有問題的硬件。
2、對(duì) MySQL(和PHP搭配之***組合) 進(jìn)程的設(shè)置進(jìn)行MySQL調(diào)優(yōu)。
3、對(duì)查詢進(jìn)行優(yōu)化。
替換有問題的硬件通常是我們的***考慮,主要原因是數(shù)據(jù)庫會(huì)占用大量資源。
不過這種解決方案也就僅限于此了。實(shí)際上,您通??梢宰屩醒胩幚砥鳎–PU)或磁盤速度加倍,也可以讓內(nèi)存增大 4 到 8 倍。
第二種方法是對(duì) MySQL(和PHP搭配之***組合) 服務(wù)器(也稱為 MySQL(和PHP搭配之***組合)d)進(jìn)行MySQL調(diào)優(yōu)。對(duì)這個(gè)進(jìn)程進(jìn)行調(diào)優(yōu)意味著適當(dāng)?shù)胤峙鋬?nèi)存,并讓 MySQL(和PHP搭配之***組合)d 了解將會(huì)承受何種類型的負(fù)載。加快磁盤運(yùn)行速度不如減少所需的磁盤訪問次數(shù)。
類似地,確保 MySQL(和PHP搭配之***組合) 進(jìn)程正確操作就意味著它花費(fèi)在服務(wù)查詢上的時(shí)間要多于花費(fèi)在處理后臺(tái)任務(wù)(如處理臨時(shí)磁盤表或打開和關(guān)閉文件)上的時(shí)間。對(duì) MySQL(和PHP搭配之***組合)d 進(jìn)行調(diào)優(yōu)是本文的重點(diǎn)。
***的方法是確保查詢已經(jīng)進(jìn)行了優(yōu)化。這意味著對(duì)表應(yīng)用了適當(dāng)?shù)乃饕?,查詢是按照可以充分利?MySQL(和PHP搭配之***組合) 功能的方式來編寫的。盡管本文并沒有包含查詢調(diào)優(yōu)方面的內(nèi)容(很多著作中已經(jīng)針對(duì)這個(gè)主題進(jìn)行了探討),不過它會(huì)配置 MySQL(和PHP搭配之***組合)d 來報(bào)告可能需要進(jìn)行MySQL調(diào)優(yōu)的查詢。
雖然已經(jīng)為這些任務(wù)指派了次序,但是仍然要注意硬件和 MySQL(和PHP搭配之***組合)d 的設(shè)置以利于適當(dāng)?shù)豈ySQL調(diào)優(yōu)查詢。機(jī)器速度慢也就罷了,我曾經(jīng)見過速度很快的機(jī)器在運(yùn)行設(shè)計(jì)良好的查詢時(shí)由于負(fù)載過重而失敗,因?yàn)?MySQL(和PHP搭配之***組合)d 被大量繁忙的工作所占用而不能服務(wù)查詢。
記錄慢速查詢
在一個(gè) SQL 服務(wù)器中,數(shù)據(jù)表都是保存在磁盤上的。索引為服務(wù)器提供了一種在表中查找特定數(shù)據(jù)行的方法,而不用搜索整個(gè)表。當(dāng)必須要搜索整個(gè)表時(shí),就稱為表掃描。通常來說,您可能只希望獲得表中數(shù)據(jù)的一個(gè)子集,因此全表掃描會(huì)浪費(fèi)大量的磁盤 I/O,因此也就會(huì)浪費(fèi)大量時(shí)間。當(dāng)必須對(duì)數(shù)據(jù)進(jìn)行連接時(shí),這個(gè)問題就更加復(fù)雜了,因?yàn)楸仨氁獙?duì)連接兩端的多行數(shù)據(jù)進(jìn)行比較。
當(dāng)然,表掃描并不總是會(huì)帶來問題;有時(shí)讀取整個(gè)表反而會(huì)比從中挑選出一部分?jǐn)?shù)據(jù)更加有效(服務(wù)器進(jìn)程中查詢規(guī)劃器用來作出這些決定)。如果索引的使 用效率很低,或者根本就不能使用索引,則會(huì)減慢查詢速度,而且隨著服務(wù)器上的負(fù)載和表大小的增加,這個(gè)問題會(huì)變得更加顯著。執(zhí)行時(shí)間超過給定時(shí)間范圍的查 詢就稱為慢速查詢。
您可以配置 MySQL(和PHP搭配之***組合)d 將這些慢速查詢記錄到適當(dāng)命名的慢速查詢?nèi)罩局?。管理員然后會(huì)查看這個(gè)日志來幫助他們確定應(yīng)用程序中有哪些部分需要進(jìn)一步調(diào)查。清單 1 給出了要啟用慢速查詢?nèi)罩拘枰?my.cnf 中所做的配置。
【編輯推薦】