接下來我們要討論的是數(shù)據(jù)庫性能優(yōu)化的另一方面,即運(yùn)用數(shù)據(jù)庫服務(wù)器內(nèi)建的工具輔助性能分析和優(yōu)化。
▲ SHOW
執(zhí)行下面這個(gè)命令可以了解服務(wù)器的運(yùn)行狀態(tài):
mysql >show status;
該命令將顯示出一長列狀態(tài)變量及其對(duì)應(yīng)的值,其中包括:被中止訪問的用戶數(shù)量,被中止的連接數(shù)量,嘗試連接的次數(shù),并發(fā)連接數(shù)量最大值,以及其他許多有用的信息。這些信息對(duì)于確定系統(tǒng)問題和效率低下的原因是十分有用的。
SHOW命令除了能夠顯示出MySQL服務(wù)器整體狀態(tài)信息之外,它還能夠顯示出有關(guān)日志文件、指定數(shù)據(jù)庫、表、索引、進(jìn)程和許可權(quán)限表的寶貴信息。請(qǐng)?jiān)L問http://www.mysql.com/doc/S/H/SHOW.html了解更多信息。
▲ EXPLAIN
EXPLAIN能夠分析SELECT命令的處理過程。這不僅對(duì)于決定是否要為表加上索引很有用,而且對(duì)于了解MySQL處理復(fù)雜連接的過程也很有用。
下面這個(gè)例子顯示了如何用EXPLAIN提供的信息逐步地優(yōu)化連接查詢。(本例來自MySQL文檔,見http://www.mysql.com/doc/E/X/EXPLAIN.html。原文寫到這里似乎有點(diǎn)潦草了事,特加上此例。)
假定用EXPLAIN分析的SELECT命令如下所示:
EXPLAIN SELECT tt.TicketNumber, tt.TimeIn,
tt.ProjectReference, tt.EstimatedShipDate,
tt.ActualShipDate, tt.ClientID,
tt.ServiceCodes, tt.RepetitiveID,
tt.CurrentProcess, tt.CurrentDPPerson,
tt.RecordVolume, tt.DPPrinted, et.COUNTRY,
et_1.COUNTRY, do.CUSTNAME
FROM tt, et, et AS et_1, do
WHERE tt.SubmitTime IS NULL
AND tt.ActualPC = et.EMPLOYID
AND tt.AssignedPC = et_1.EMPLOYID
AND tt.ClientID = do.CUSTNMBR;
SELECT命令中出現(xiàn)的表定義如下:
※表定義
表 列 列類型
tt ActualPC CHAR(10)
tt AssignedPC CHAR(10)
tt ClientID CHAR(10)
et EMPLOYID CHAR(15)
do CUSTNMBR CHAR(15)
※索引
表 索引
tt ActualPC