1. 程式人生 > >mysql效能調優(二)——查詢mysql程序狀態

mysql效能調優(二)——查詢mysql程序狀態

除了可以檢視資料庫狀態,還可以觀察mysql程序狀態

用show processlist 或者開啟慢查詢,獲取有問題的sql(而用profiling以及explain分析sql語句我們暫時以後再說)

mysql -uroot -e 'show processlist' 看資料庫狀態

新建一個sh去執行檢視mysql的程序狀態  tjproce.sh

#!/bin/bash

while true

do

mysql -uroot -e 'show processlist \G' | grep state | uniq | sort -rn >> proce.txt

usleep 100000  -->一秒執行10次

done 

proce.txt的結果可能如下(即mysql執行時的部分可疑狀態):

State : Sending data

State : Null

State : Coping to tmp table 複製到臨時表

State : sorting result   排序(磁碟排序更慢)

State : converting heap to MYISAM   查詢結果太大

State : create tmp tab 建立臨時表(索引利用不合理)

看一條語句執行的具體情況:show profiles

為sql語句生成一條執行計劃:show profile for query 2 / show profiling=on

下面再補充個知識點:

資料庫的三正規化:

1:列不可再分

2:行可以唯一區分 即主鍵約束

3:表的非主屬性不能依賴於其他表的非主屬性 即外來鍵約束
1 2 3 正規化層層遞進,一級一級依賴的