MySQL Sending data導(dǎo)致查詢很慢問題怎么解決
我們使用電腦和手機(jī)時(shí)候最不能忍受就是設(shè)備又卡又慢了,嚴(yán)重影響我們工作或者游戲體驗(yàn)。對于數(shù)據(jù)庫,有用戶遇到MySQL Sending data導(dǎo)致查詢很慢問題,怎么解決呢?這篇文章主要介紹了解決MySQL Sending data導(dǎo)致查詢很慢問題的方法與思路,感興趣的小伙伴們可以參考一下
【問題現(xiàn)象】
使用sphinx支持倒排索引,但sphinx從mysql查詢源數(shù)據(jù)的時(shí)候,查詢的記錄數(shù)才幾萬條,但查詢的速度非常慢,大概要4~5分鐘左右
【處理過程】
1)explain
首先懷疑索引沒有建好,于是使用explain查看查詢計(jì)劃,結(jié)果如下:
從explain的結(jié)果來看,整個(gè)語句的索引設(shè)計(jì)是沒有問題的,除了第一個(gè)表因?yàn)闃I(yè)務(wù)需要進(jìn)行整表掃描外,其它的表都是通過索引訪問
2)show processlist;
explain看不出問題,那到底慢在哪里呢?
于是想到了使用 show processlist查看sql語句執(zhí)行狀態(tài),查詢結(jié)果如下:
發(fā)現(xiàn)很長一段時(shí)間,查詢都處在 “Sending data”狀態(tài)
查詢一下“Sending data”狀態(tài)的含義,原來這個(gè)狀態(tài)的名稱很具有誤導(dǎo)性,所謂的“Sending data”并不是單純的發(fā)送數(shù)據(jù),而是包括“收集 + 發(fā)送 數(shù)據(jù)”。
這里的關(guān)鍵是為什么要收集數(shù)據(jù),原因在于:mysql使用“索引”完成查詢結(jié)束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“數(shù)據(jù)行”上將需要返回的數(shù)據(jù)讀取出來返回個(gè)客戶端。
3)show profile
為了進(jìn)一步驗(yàn)證查詢的時(shí)間分布,于是使用了show profile命令來查看詳細(xì)的時(shí)間分布
首先打開配置:set profiling=on;
執(zhí)行完查詢后,使用show profiles查看query id;
使用show profile for query query_id查看詳細(xì)信息;
結(jié)果如下:
從結(jié)果可以看出,Sending data的狀態(tài)執(zhí)行了216s
4)排查對比
經(jīng)過以上步驟,已經(jīng)確定查詢慢是因?yàn)榇罅康臅r(shí)間耗費(fèi)在了Sending data狀態(tài)上,結(jié)合Sending data的定義,將目標(biāo)聚焦在查詢語句的返回列上面
經(jīng)過一 一排查,最后定為到一個(gè)description的列上,這個(gè)列的設(shè)計(jì)為:`description`varchar(8000) DEFAULT NULL COMMENT '游戲描述',
于是采取了對比的方法,看看“不返回description的結(jié)果”如何。show profile的結(jié)果如下:
可以看出,不返回description的時(shí)候,查詢時(shí)間只需要15s,返回的時(shí)候,需要216s,兩者相差15倍
補(bǔ)充:解決系統(tǒng)變慢的常用技巧方法
1、在我的電腦窗口,右擊要清理的盤符―“屬性”―“清理磁盤”--勾選要?jiǎng)h除的文件--確定--是。
2、右鍵瀏覽器e――屬性――點(diǎn)2個(gè)刪除1個(gè)清除(都要逐一確定)――確定 。
3、把C:\WINDOWS\Prefetch(預(yù)讀文件)把里面的文件全部刪除
4、用優(yōu)化大師或超級兔子清理注冊表和垃圾文件。
5、“開始”――運(yùn)行中輸入msconfig――確定――啟動――除了輸入法ctfmon以外的勾全去掉。
6、右鍵我的電腦”――屬性――點(diǎn)高級――點(diǎn)啟動和故障恢復(fù)中的設(shè)置――去掉所有的勾――寫入調(diào)試信息選擇“無”――確定――點(diǎn)高級下面錯(cuò)誤報(bào)告――點(diǎn)禁用――2次確定。
7、“開始”..打開控制面板中的文件夾選項(xiàng)..點(diǎn)查看..點(diǎn)去末項(xiàng)自動搜索文件夾前面的勾..確定。
8、右鍵我的電腦――屬性――硬件――設(shè)備管理器――雙擊IDE控制器――次要通道――高級設(shè)置――傳送模式都選DMA――設(shè)備類型選無――確定――主要通道也同樣設(shè)置――確定。
9、右鍵C盤進(jìn)行磁盤清理和其它選項(xiàng)中的系統(tǒng)還原清理。
10、刪除不用的程序軟件。
查詢很慢問題怎么解決相關(guān)文章: