資料庫正規化 MySQL 資料庫監控

調整組態、優化SQL指令 動手找回MySQL效能

2018-05-14
MySQL在運作一段時間之後,執行效能無可避免地都會慢慢下滑,其實透過組態設定就能夠找回原本的運作效能。而使用MySQL本身內建的指令,則可以隨時分析SQL指令的效能。如果嫌指令繁雜難記,只要使用開源工具mytop,就能夠即時監控MySQL伺服器的運行狀態。

在簡單說明explain的用法之後,接著以測試SQL指令常用的in和not in語法為例來分析其效能,測試結果如圖12所示。從中可以發現,使用in語法會比使用not in語法的效能更佳。


▲圖12 藉由測試in和not in語法來分析效能。

藉由此類的分析來改寫SQL指令,就能夠優化查詢的效能。

使用MySQL監控軟體mytop

就如同Linux系統提供top工具程式,讓使用者能夠檢視系統資源的使用情況,在開源碼社群中,也提供了一個類似top的工具程式,它是以Perl語言實作,名稱為mytop,可用來監控MySQL資料庫的資源使用情況。可連結至「http://jeremy.zawodny.com/mysql/mytop/」網址來取得mytop的最新版本,本文使用的版本為1.6。

取得安裝檔案之後,進行解壓縮,依序執行下列指令開始安裝程序:

perl Makefile.PL
make
make test
make install
成功安裝mytop後,就會產生名為「mytop」的執行檔,此時便可利用此執行檔來監控MySQL伺服器,mytop常用的選項如下:

-u:登入資料庫的帳號名稱,預設為root。

-p:登入資料庫所使用的密碼資訊,預設為空。

-h:資料庫所在的主機資訊,預設為localhost。

-P:資料庫所使用的通訊埠,預設為3306。

-s: 顯示資訊的時間間隔(單位為秒),預設為5秒,表示每5秒就會重新顯示一次最新的資訊。

-d: 設定欲連接測試的資料庫名稱,如果未設定此參數,便預設使用名稱為「test」的資料庫。

-b:設定僅顯示一次最新資訊,而非連續更新。

-S: 指定MySQL伺服器所使用的Socket檔案所在,如果mytop與MySQL服器位於同一台主機上,即可利用指定Socket檔案的方式來監控資料庫。

--noheader: 不顯示標題(Header)資訊,亦即不顯示如圖13內(A)部分的資訊。

--header:顯示標題資訊,此為預設的選項。


▲圖13 查看MySQL伺服器目前的運作狀態。

緊接著,可以執行「mytop -u [帳號名稱] -p [所使用的密碼資訊]」指令來取得目前MySQL伺服器的運作狀態,其中包括MySQL伺服器版本以及目前連線的資訊。

至此,管理員就可以利用mytop來即時監控MySQL伺服器的運作狀態了。

<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!