2014-10-30 78 views
0

如何在批量插入時禁用MySQL更新INDEX的統計信息?我試圖在沒有更新統計信息的情況下進行批量插入之前和之後使用INDEX測試SELECT語句的性能下降。在INSERT上禁用MySQL統計信息

+0

有什麼意義?我很難理解這個練習的要點。統計影響選擇執行計劃;但它們不會導致執行的「性能下降」。要測試查詢的不同執行計劃的性能,可以使用索引提示對選定的執行計劃施加影響。 [http://dev.mysql.com/doc/refman/5.5/en/index-hints.html](http://dev.mysql.com/doc/refman/5.5/en/index-hints.html) 。我無法理解爲什麼你需要或想要不準確的統計數據。 – spencer7593 2014-10-30 03:37:39

+0

@ spencer7593禁用元統計可以極大地改善對信息模式的查詢。這可能會導致問題,如果你沒有立即在事後讓他們回來,但。這是關於禁用它們的唯一一貫有用的應用程序,雖然我遇到過。 – mopsyd 2017-04-30 00:17:51

+0

@mopsyd:我同意你關於'innodb_stats_on_metadata'的觀點,禁用它可顯着提高針對'information_schema'的查詢性能。但我認爲這不會禁用Innodb自動收集統計信息,當表格的1/16或20億行發生更改時,會發生索引「潛水」。如果發現自動統計收集會影響「批量」插入的性能,我會非常驚訝。如果Innodb統計數據收集可以被禁用,我認爲它不會對批量負載產生可衡量的影響。 – spencer7593 2017-04-30 02:21:34

回答

1

如果您使用的是MyISAM,那麼您做錯了。如果您使用的是Innnodb,Innodb將統計(隨機進入數據集)計算執行計劃的指標統計數據。你可以控制這個,但爲什麼?你想從計算不好的索引中獲得什麼?