2010年11月9日 星期二

mysql select 花了過多時間在 statistics 階段

今天遇到的神祕現象, Statistics bottleneck on large table 這篇講得超清楚的, 包含問題和他試過的各種無效方案。我的情境和他差不多, 單純地從一個 table 用 primary key 取出一筆資料, 結果花了 0.02s, 用 profiling 看才發覺都花在 statistics 上, 但 analyze table、用 force index 等方法都無效, 實在是太詭異了。

最後是 drop 掉某個暫時沒用到的 index, 結果就好了。剛好我有好幾個之前實驗用的 index 和兩組一模一樣的 database, 在另一個 database 的同一 table 裡 drop 掉另一個 index, 結果也修正這個問題。無法理解啊。

Btw, 上網查沒看到 statistics 的詳細說明, 印象中 High Performance MySQL 2e 好像有提到過, 不過翻書沒查到什麼東西。印象中說是依 static statistics 和 dynamic statistics 決定如何執行 query。反到在官網 SHOW PROFILES 裡看到, profiling 是企業版沒有的功能。雖說沒有仔細解釋各 state 的含意, 沒有 profiling, 企業版怎麼抓瓶頸啊? 還是有更好的替代工具?

沒有留言:

張貼留言

C++ 能否用 memcpy 複製 class / struct 的資料?

答案是: POD (plain old data) type 可以。POD type 可和 C 互通, CPP Reference POD Type 的介紹: Specifies that the type is POD (Plain Old Data) type. Thi...