itVincent Blog - Java Working Fun!

          技術引領時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          導航

          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(5)

          我參與的團隊

          隨筆分類(70)

          隨筆檔案(117)

          文章檔案(12)

          相冊

          收藏夾(1)

          我的BLOG

          我的朋友BLOG

          搜索

          •  

          積分與排名

          • 積分 - 308140
          • 排名 - 187

          最新評論

          閱讀排行榜

          評論排行榜

          MySQL數據庫查詢變慢的分析及解決過程

          Posted on 2009-12-11 10:47 itVincent 閱讀(6377) 評論(3)  編輯  收藏 所屬分類: Java應用
          最近客戶提出某些業務查詢數據的速度特別慢,而且這種情況來的比較突然。

          情況:
          1.系統最近沒有更新
          2.數據庫結構沒有更改
          3.沒有大量增加過數據

          分析:
          1.應用服務器問題:嘗試把慢的業務的SQL語句取出到mysql命令行執行,速度依然很慢
          2.VPN問題:把業務系統數據導出,再導入到本地數據庫運行,速度很快,沒有出現上述問題

          陷入困境,求教于DBA,DBA也很茫然,查看進程,每次執行那些SQL語句進程占用CPU都非常高;沒有錯誤的日志;MYSQL也運行了2個多月沒重啟過;硬盤也檢查過OK的,也懷疑是raid有問題。

          查了這么多也沒有找到原因,包括mysql和應用服務器都重啟過了。

          最后DBA說用Analyze Table的方法看看。

          語句是:
          ANALYZE TABLE MYTABLE;

          運行后,問題解決,速度恢復正常。


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

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

          此時可以看到,MYTABLE 數據有幾百,但是CARDINALITY只有10,可見CARDINALITY大大少于數據量,因此這個索引基本起不到作用,例如當查詢語句對這個字段用到join連接時,由于索引的失效,查詢就會變得很慢。

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

          Feedback

          # re: MySQL數據庫查詢變慢的分析及解決過程  回復  更多評論   

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

          # re: MySQL數據庫查詢變慢的分析及解決過程  回復  更多評論   

          2009-12-12 13:25 by 久久書城
          十六大開發開始打開

          # re: MySQL數據庫查詢變慢的分析及解決過程  回復  更多評論   

          2009-12-15 18:02 by java狼
          @久久書城
          能舉報屏蔽了這個賤人么……
          主站蜘蛛池模板: 荣成市| 荥经县| 正宁县| 许昌市| 东辽县| 隆昌县| 香港 | 罗甸县| 子洲县| 朝阳县| 修武县| 中西区| 克山县| 射阳县| 青浦区| 丰镇市| 堆龙德庆县| 房产| 三明市| 花莲市| 保山市| 安达市| 湾仔区| 曲阜市| 常山县| 香格里拉县| 平舆县| 南投市| 泗洪县| 大渡口区| 二连浩特市| 甘洛县| 乡宁县| 获嘉县| 台山市| 巩留县| 汾阳市| 明水县| 河津市| 武夷山市| 新乡县|