一個(gè)系統(tǒng)中數(shù)據(jù)庫(kù)往往會(huì)成為性能瓶頸,在開(kāi)發(fā)階段更多考慮的可能是功能的完成,隨著系統(tǒng)的投入使用,數(shù)據(jù)量越來(lái)越大,sql語(yǔ)句查詢(xún)速度慢的問(wèn)題就會(huì)被凸顯出來(lái)。
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供高陽(yáng)網(wǎng)站建設(shè)、高陽(yáng)做網(wǎng)站、高陽(yáng)網(wǎng)站設(shè)計(jì)、高陽(yáng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、高陽(yáng)企業(yè)網(wǎng)站模板建站服務(wù),10多年高陽(yáng)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。對(duì)于一個(gè)有sql語(yǔ)句性能為題的系統(tǒng),如何找出問(wèn)題,解決問(wèn)題,就是下面要探討的內(nèi)容:
1.???? 查看sql執(zhí)行頻率:
Mysql客戶(hù)端連接成功以后,通過(guò)show [session|global] status命令可以提供服務(wù)器狀態(tài)信息,show session status顯示當(dāng)前連接的統(tǒng)計(jì)結(jié)果,show global status顯示自數(shù)據(jù)庫(kù)上次啟動(dòng)至今的統(tǒng)計(jì)結(jié)果,如果不寫(xiě)默認(rèn)參數(shù)是session.
我們關(guān)心的信息可以通過(guò)下面這個(gè)語(yǔ)句獲取到
Show status like ‘com_______’;(com后面是六個(gè)下劃線作為占位符)
它可以查詢(xún)出com開(kāi)頭的信息。這查詢(xún)的是當(dāng)前連接的統(tǒng)計(jì)結(jié)果,如果想查全局可以使用:
Show global status like ‘com______’;
Com_**指的是相應(yīng)語(yǔ)句執(zhí)行的次數(shù),它會(huì)對(duì)所有存儲(chǔ)引擎的表操作進(jìn)行統(tǒng)計(jì),有幾個(gè)數(shù)據(jù)比較重要:
Com_select 執(zhí)行查詢(xún)的次數(shù),每次查詢(xún)累加1
Com_insert 執(zhí)行插入操作的次數(shù),沒(méi)插入一條數(shù)據(jù)累加1,批量插入也累加1
Com_update 執(zhí)行更新操作的次數(shù)
Com_delete 執(zhí)行刪除操作的次數(shù)
show status like ‘Innodb_rows_%’;
這個(gè)命令可以顯示針對(duì)Innodb存儲(chǔ)引擎的信息
Innodb_rows_read:select查詢(xún)返回的行數(shù),
Innodb_rows_inserted 插入的條數(shù)
Innodb_rows_updated 更新的條數(shù)
Innodb_rows_deleted刪除的條數(shù)
Connections:試圖連接MySql服務(wù)器的次數(shù)
Uptime:服務(wù)器工作時(shí)間
Show_queries:慢查詢(xún)的次數(shù)
通過(guò)這兩個(gè)命令我們可以看到當(dāng)前系統(tǒng)是查詢(xún)占主要地位還是插入占主要地位,為我們的后續(xù)優(yōu)化提供一個(gè)方向
2.??? 定位低效率的sql:
可以通過(guò)兩種方法來(lái)定位低效率的sql
1)??? 慢查詢(xún)?nèi)罩?,可以通過(guò)慢查詢(xún)?nèi)罩緛?lái)定位到那些執(zhí)行速度慢的sql語(yǔ)句,但是慢查詢(xún)?nèi)罩臼窃诓樵?xún)結(jié)束之后再記錄,并不能實(shí)時(shí)反映sql語(yǔ)句執(zhí)行的狀態(tài)。
2)??? show processlist:通過(guò)這個(gè)命令可以實(shí)時(shí)的看到當(dāng)前mysql在執(zhí)行的線程,包括線程的執(zhí)行狀態(tài),可以看到sql語(yǔ)句執(zhí)行的狀態(tài)
Id:用戶(hù)登錄時(shí)系統(tǒng)分配的連接id
User:顯示當(dāng)前登錄用戶(hù),這個(gè)命令只顯示當(dāng)前登錄用戶(hù)權(quán)限范圍內(nèi)的sql語(yǔ)句
Host:? 顯示這個(gè)sql語(yǔ)句是由哪個(gè)ip的哪個(gè)端口發(fā)出的。
Db:顯示這個(gè)進(jìn)程連接的是哪個(gè)數(shù)據(jù)庫(kù)
Command:顯示當(dāng)前連接執(zhí)行的是什么命令,一般有休眠(Sleep),查詢(xún)(Query),連接(Connection)等
Time:顯示這個(gè)狀態(tài)持續(xù)的時(shí)間,單位是秒
State:顯示當(dāng)前sql語(yǔ)句執(zhí)行狀態(tài),比如查詢(xún)語(yǔ)句可能經(jīng)過(guò)如下?tīng)顟B(tài):copying to tmp table、sorting result、sending data
Info:顯示這個(gè)sql語(yǔ)句,通過(guò)它可以判斷問(wèn)題
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。