如何手動更新MySQL 表的統計分析記錄,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
我們提供的服務有:網站設計、網站制作、微信公眾號開發、網站優化、網站認證、大觀ssl等。為上千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的大觀網站制作公司
大致上大部分的數據庫都有統計分析,主要的作用就是在語句執行的情況下,能盡量的選擇相對正確的方式來走執行計劃,越準確的統計分析,可以帶來更好的執行計劃和數據庫的語句執行性能,但相對來說越準確的統計分析,也會帶來系統在統計時的性能消耗,越大的數據庫系統,對統計分析的需求和要求也就越高。
從MYSQL 5.6 開始,統計分析的信息會固化在系統的存儲中,通過下面的語句可以查看我們相隔的開關是否打開。
而在進行統計分析中都有一個采樣率的概念,也就是根據估計索引列的基數和其他的統計信息要抽樣的索引頁的數量。其實這樣算看似合理,但實際上如果挑選的索引頁不具有代表性,這樣的算法還可能會錯誤引導數據庫的基本的統計分析的信息。這也就是為什么有時候明明建立了索引,卻不走,在手動觸發統計分析后,執行的結果有變化了的原因。默認抽樣的頁數是8 pages,我們可以改動默認抽樣的頁數,來達到提高準確率的功效。但同樣付出的代價就是,在抽樣時的消耗的I/O 和相關資源。
我們是可以定期對一些大表進行 analyze table 的,可以寫一個定期的運行的腳本來完成此事,盡量達到統計分析的準確性。但通常一般都是通過自動觸發的方式來完成這樣的工作。
而我們可以進行一個測試,關于MYSQL的索引和真是的表信息之間是否有差距。
1 我們將需要檢驗的字段進行distinct 并且 count 返回的數據和我們建立索引的數據進行比對,看看是否有問題,對比兩張圖中的數據,可以清晰的發現,索引中的Cardinality 和實際中的字段的數據比較,是不一樣的。
其實我們已經操作了analyze table 但是我們依然沒有得到準確的數字,在平時這可能不會有什么問題,但如果是較大的表例如上千萬的表,如果這方面錯的比較錯,會對執行計劃產生問題,這時候可能就需要我們通過手動的方式來更新某些表的記錄。
update mysql.innodb_table_stats set n_rows = 300024 where database_name = 'employees' and table_name = 'employees';
同理也可以更新 innodb_index_stats表里面的數據
以上方法僅僅使用于統計分析的不準確嚴重影響到了執行計劃,一般我們還是不要動系統中的統計分析表,另外這樣做的另一個問題就是, 你的表不會頻繁更新的操作,并且你要找好自己更新數值的時間點。
看完上述內容,你們掌握如何手動更新MYSQL 表的統計分析記錄的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!
名稱欄目:如何手動更新MYSQL表的統計分析記錄
轉載注明:http://m.kartarina.com/article36/jecspg.html
成都網站建設公司_創新互聯,為您提供網站營銷、電子商務、全網營銷推廣、網站策劃、定制網站、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯