真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何找出Mysql查詢速度慢的SQL語句

小編給大家分享一下如何找出MySQL查詢速度慢的SQL語句,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站專注于麻城企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。麻城網(wǎng)站建設(shè)公司,為麻城等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

啟動Mysql時加參數(shù)--log-slow-queries來記錄執(zhí)行時間超過long_query_time秒的sql:

[@more@]

啟動Mysql時加參數(shù)--log-slow-queries來記錄執(zhí)行時間超過long_query_time秒的sql:
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql

--user=mysql --pid-file=/var/run/mysqld/mysqld.pid

--skip-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock --log-slow-

queries=/var/log/mysql/slow.log

explain來了解SQL執(zhí)行的狀態(tài)。

explain select * from wp_postsG;

使用show status like "Handler_read%"; 來了解索引的效果。

Handler_read_key 值高表示索引效果好,Handler_read_rnd_next值高表示索引低效。

用show processlist 查看當(dāng)前運行狀態(tài)。

mysql> show processlist;

+-----+-------------+--------------------+

| Id | User | Host | db | Command | Time| State | Info

+-----+-------------+--------------------+

|207|root |192.168.0.20:51718 |mytest | Sleep | 5 | | NULL

|208|root |192.168.0.20:51719 |mytest | Sleep | 5 | | NULL

|220|root |192.168.0.20:51731 |mytest |Query | 84 | Locked |

select bookname,culture,value,type from book where id=001

先簡單說一下各列的含義和用途,第一列,id,不用說了吧,一個標(biāo)識,你要kill一個語句的時候很有用。user列,顯示單前用戶,如果不是 root,這個命令就只顯示你權(quán)限范圍內(nèi)的sql語句。host列,顯示這個語句是從哪個ip的哪個端口上發(fā)出的。呵呵,可以用來追蹤出問題語句的用戶。 db列,顯示這個進(jìn)程目前連接的是哪個數(shù)據(jù)庫。command列,顯示當(dāng)前連接的執(zhí)行的命令,一般就是休眠(sleep),查詢(query),連接 (connect)。time列,此這個狀態(tài)持續(xù)的時間,單位是秒。state列,顯示使用當(dāng)前連接的sql語句的狀態(tài),很重要的列,后續(xù)會有所有的狀態(tài) 的描述,請注意,state只是語句執(zhí)行中的某一個狀態(tài),一個sql語句,已查詢?yōu)槔赡苄枰?jīng)過copying to tmp table,Sorting result,Sending data等狀態(tài)才可以完成,info列,顯示這個sql語句,因為長度有限,所以長的sql語句就顯示不全,但是一個判斷問題語句的重要依據(jù)。

這個命令中最關(guān)鍵的就是state列,mysql列出的狀態(tài)主要有以下幾種:

Checking table

正在檢查數(shù)據(jù)表(這是自動的)。

Closing tables

正在將表中修改的數(shù)據(jù)刷新到磁盤中,同時正在關(guān)閉已經(jīng)用完的表。這是一個很快的操作,如果不是這樣的話,就應(yīng)該確認(rèn)磁盤空間是否已經(jīng)滿了或者磁盤是否正處于重負(fù)中。

Connect Out

復(fù)制從服務(wù)器正在連接主服務(wù)器。

Copying to tmp table on disk

由于臨時結(jié)果集大于 tmp_table_size,正在將臨時表從內(nèi)存存儲轉(zhuǎn)為磁盤存儲以此節(jié)省內(nèi)存。

Creating tmp table

正在創(chuàng)建臨時表以存放部分查詢結(jié)果。

deleting from main table

服務(wù)器正在執(zhí)行多表刪除中的第一部分,剛刪除第一個表。

deleting from reference tables

服務(wù)器正在執(zhí)行多表刪除中的第二部分,正在刪除其他表的記錄。

Flushing tables

正在執(zhí)行 FLUSH TABLES,等待其他線程關(guān)閉數(shù)據(jù)表。

Killed

發(fā)送了一個kill請求給某線程,那么這個線程將會檢查kill 標(biāo)志位,同時會放棄下一個kill請求。MySQL會在每次的主循環(huán)中檢查kill標(biāo)志位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被 其他線程鎖住了,那么kill請求會在鎖釋放時馬上生效。

Locked

被其他查詢鎖住了。

Sending data

正在處理 select 查詢的記錄,同時正在把結(jié)果發(fā)送給客戶端。

Sorting for group

正在為 GROUP BY 做排序。

Sorting for order

正在為 ORDER BY 做排序。

Opening tables

這個過程應(yīng)該會很快,除非受到其他因素的干擾。例如,在執(zhí) alter TABLE 或 LOCK TABLE 語句行完以前,數(shù)據(jù)表無法被其他線程打開。 正嘗試打開一個表。

Removing duplicates

正在執(zhí)行一個 select DISTINCT

以上是“如何找出Mysql查詢速度慢的SQL語句”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標(biāo)題名稱:如何找出Mysql查詢速度慢的SQL語句
文章網(wǎng)址:http://weahome.cn/article/jjhohc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部