mysql效能調優(一)——查詢資料庫狀態
所謂效能調優,首先要發現問題,才能知道怎麼進行效能調優噻,所以我們先從發現問題開始
1、show status 查詢資料庫狀態
其中監控伺服器狀態比較重要的幾個引數是:
Queries | 進行多少次查詢 |
Threads_connected | 程序 |
Threads_running | 執行緒查詢 |
2、其次,我們應學會使用 awk 文字處理工具
例如,Linux下存在有score.txt文字如下
name age gold
ricy 50 12
Lct 23 23
LCX 18 89
用awk命令去查詢的話
awk '{printf("%s\n",$0)}' 語句一
查詢出來的結果是
ricy 50 12 查詢語句一結果
Lct 23 23
LCX 18 89
awk '{printf("%s\n",$1)}' 語句二
ricy 50 12 查詢語句二結果
awk '{printf("%s\n",$2)}' 語句三
Lct 23 23 查詢語句三結果
(規律可想而知)awk '{printf("%s\n",$3)}'的查詢結果便是: LCX 18 89
awk '/L/{printf("%s\n",$0)}' 語句四(以L開頭的)
Lct 23 23
LCX 18 89
由此:可以用awk表示式去監控伺服器狀態
mysqladmin -uroot ext | awk '/Queries/{printf("%d",$4)}'/Threads_connected/{printf("%d",$4)}'/Threads_running/{printf("%d",$4)}'
mysqladmin -uroot ext|awk '/Queries/{q=$4}'/Threads_connected/{c=$4}'/Threads_running/{r=$4}END{printf("%d %d %d\n", q, c, r)}'
O(∩_∩)O哈哈~ 呼叫當然要先找問題了噻!上面中這樣就可以監控伺服器狀態咯!
可以偷懶的是!在伺服器中,你可以自己寫一個命令 tjsStatus.sh 去統計監控伺服器狀態,並啟動
# !/bin/bash
while true
do
mysqladmin -uroot ext|awk '/Queries/{q=$4}'/Threads_connected/{c=$4}'/Threads_running/{r=$4}END{printf("%d %d %d\n", q, c, r)}' >> status.txt
sleep 1
done
下面再補充幾個知識點:
1、在mysql中建表中,有varchar和char的區別,加入用char(20)來儲存‘abc’的話,其儲存的字元將佔20個位元組,但有17個是空的;但是用varchar的話就只會有3個,20只是它的最大值
2、查詢的時候union all的效率肯定比union快,因為前面的只是將結果集合並,所以會有重複的資料