mysql效能調優(二)——查詢mysql程序狀態
阿新 • • 發佈:2018-12-10
除了可以檢視資料庫狀態,還可以觀察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 正規化層層遞進,一級一級依賴的