1. 程式人生 > >mysql效能調優(一)——查詢資料庫狀態

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快,因為前面的只是將結果集合並,所以會有重複的資料