我們知道Mysql可以log下來運行的比較慢的sql語句。
不過,默認是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在MySQL啟動的時候加入一些參數。
如果在my.cnf里面修改,需增加如下幾行:
mysql用戶訪問慢,long_query_time = 1?? //指執行超過多久的sql會被log下來,這里是1秒。log-slow-queries = log-queries-not-using-indexes?//設置把日志寫在那里,可以為空,系統會給一個缺省的文件log-queries-not-using-indexes 就是紀錄沒使用索引的sql。
分析:
mysqldumpslow –help 以下,主要用的是
-s??? ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
mysql慢。-t??? NUM just show the top n queries
-g??? PATTERN grep: only consider stmts that include this string
-s,? 是order的順序,說明寫的不夠詳細,俺用下來,包括看了代碼,主要有c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
-t,? 是top n的意思,即為返回前面多少條的數據
mysql比mssql慢、-g, 后邊可以寫一個正則匹配模式,大小寫不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
數據庫查詢慢,mysqldumpslow -t 10 -s t -g “left join” host-slow.log
這個是按照時間返回前10條里面含有左連接的sql語句。
Time: 060908 22:17:43
# Query_time: 12 Lock_time: 0 Rows_sent: 86345 Rows_examined: 580963
點滴滴得慢咋回事?Q:這個是慢查的日志,都是些什么意思?
A:查詢用了12妙,返回86345行,一共查了580963行
查詢速度慢的原因很多,常見原因有如下幾種可能:
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷)
mysql 查詢很慢原因。2、I/O吞吐量小,形成了瓶頸效應。
3、沒有創建計算列導致查詢不優化。
4、內存不足
5、網絡速度慢
mysql數據庫還原慢,6、查詢出的數據量過大(可以采用多次查詢,其他的方法降低數據量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
mysql更新數據庫慢?10、查詢語句不好,沒有優化
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态