itVincent Blog - Java Working Fun!

          技術(shù)引領(lǐng)時(shí)代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12
          最近客戶提出某些業(yè)務(wù)查詢數(shù)據(jù)的速度特別慢,而且這種情況來(lái)的比較突然。

          情況:
          1.系統(tǒng)最近沒(méi)有更新
          2.數(shù)據(jù)庫(kù)結(jié)構(gòu)沒(méi)有更改
          3.沒(méi)有大量增加過(guò)數(shù)據(jù)

          分析:
          1.應(yīng)用服務(wù)器問(wèn)題:嘗試把慢的業(yè)務(wù)的SQL語(yǔ)句取出到mysql命令行執(zhí)行,速度依然很慢
          2.VPN問(wèn)題:把業(yè)務(wù)系統(tǒng)數(shù)據(jù)導(dǎo)出,再導(dǎo)入到本地?cái)?shù)據(jù)庫(kù)運(yùn)行,速度很快,沒(méi)有出現(xiàn)上述問(wèn)題

          陷入困境,求教于DBA,DBA也很茫然,查看進(jìn)程,每次執(zhí)行那些SQL語(yǔ)句進(jìn)程占用CPU都非常高;沒(méi)有錯(cuò)誤的日志;MYSQL也運(yùn)行了2個(gè)多月沒(méi)重啟過(guò);硬盤(pán)也檢查過(guò)OK的,也懷疑是raid有問(wèn)題。

          查了這么多也沒(méi)有找到原因,包括mysql和應(yīng)用服務(wù)器都重啟過(guò)了。

          最后DBA說(shuō)用Analyze Table的方法看看。

          語(yǔ)句是:
          ANALYZE TABLE MYTABLE;

          運(yùn)行后,問(wèn)題解決,速度恢復(fù)正常。


          MySQL 的在優(yōu)化SQL語(yǔ)句時(shí),首先需要收集一些相關(guān)信息,其中就包括表的cardinality(可以翻譯為“散列程度”),它表示某個(gè)索引對(duì)應(yīng)的列包含多少個(gè)不同的值——如果cardinality大大少于數(shù)據(jù)的實(shí)際散列程度,那么索引就基本失效了。
          我們可以使用SHOW INDEX語(yǔ)句來(lái)查看索引的散列程度。

          TABLE         KEY_NAME       COLUMN_NAME CARDINALITY
          ------- -------- ----------- -----------
          MYTABLE   PRIMARY          ORG_ID_FK                   10

          此時(shí)可以看到,MYTABLE 數(shù)據(jù)有幾百,但是CARDINALITY只有10,可見(jiàn)CARDINALITY大大少于數(shù)據(jù)量,因此這個(gè)索引基本起不到作用,例如當(dāng)查詢語(yǔ)句對(duì)這個(gè)字段用到j(luò)oin連接時(shí),由于索引的失效,查詢就會(huì)變得很慢。

          在使用了ANALYZE TABLE后cardinality被增大到了500,因此查詢的性能得到了提高。

          Feedback

          # re: MySQL數(shù)據(jù)庫(kù)查詢變慢的分析及解決過(guò)程  回復(fù)  更多評(píng)論   

          2009-12-11 19:35 by feenn
          很好,受教!

          # re: MySQL數(shù)據(jù)庫(kù)查詢變慢的分析及解決過(guò)程  回復(fù)  更多評(píng)論   

          2009-12-12 13:25 by 久久書(shū)城
          十六大開(kāi)發(fā)開(kāi)始打開(kāi)

          # re: MySQL數(shù)據(jù)庫(kù)查詢變慢的分析及解決過(guò)程  回復(fù)  更多評(píng)論   

          2009-12-15 18:02 by java狼
          @久久書(shū)城
          能舉報(bào)屏蔽了這個(gè)賤人么……
          主站蜘蛛池模板: 东方市| 夏津县| 盐山县| 洞口县| 澜沧| 大方县| 尚志市| 桦川县| 深水埗区| 浏阳市| 伽师县| 绥芬河市| 洱源县| 和顺县| 吉林省| 休宁县| 黑河市| 桓台县| 泰宁县| 濮阳市| 鄢陵县| 会同县| 南安市| 鸡西市| 贵德县| 平利县| 全州县| 遂川县| 探索| 甘洛县| 黑山县| 福贡县| 大连市| 昌都县| 本溪市| 天峨县| 潼关县| 保定市| 绍兴市| 高州市| 乃东县|