溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄

發(fā)布時(shí)間:2021-10-25 10:30:50 來源:億速云 閱讀:315 作者:柒染 欄目:大數(shù)據(jù)

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

大致上大部分的數(shù)據(jù)庫(kù)都有統(tǒng)計(jì)分析,主要的作用就是在語(yǔ)句執(zhí)行的情況下,能盡量的選擇相對(duì)正確的方式來走執(zhí)行計(jì)劃,越準(zhǔn)確的統(tǒng)計(jì)分析,可以帶來更好的執(zhí)行計(jì)劃和數(shù)據(jù)庫(kù)的語(yǔ)句執(zhí)行性能,但相對(duì)來說越準(zhǔn)確的統(tǒng)計(jì)分析,也會(huì)帶來系統(tǒng)在統(tǒng)計(jì)時(shí)的性能消耗,越大的數(shù)據(jù)庫(kù)系統(tǒng),對(duì)統(tǒng)計(jì)分析的需求和要求也就越高。

從MYSQL 5.6 開始,統(tǒng)計(jì)分析的信息會(huì)固化在系統(tǒng)的存儲(chǔ)中,通過下面的語(yǔ)句可以查看我們相隔的開關(guān)是否打開。

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄

而在進(jìn)行統(tǒng)計(jì)分析中都有一個(gè)采樣率的概念,也就是根據(jù)估計(jì)索引列的基數(shù)和其他的統(tǒng)計(jì)信息要抽樣的索引頁(yè)的數(shù)量。其實(shí)這樣算看似合理,但實(shí)際上如果挑選的索引頁(yè)不具有代表性,這樣的算法還可能會(huì)錯(cuò)誤引導(dǎo)數(shù)據(jù)庫(kù)的基本的統(tǒng)計(jì)分析的信息。這也就是為什么有時(shí)候明明建立了索引,卻不走,在手動(dòng)觸發(fā)統(tǒng)計(jì)分析后,執(zhí)行的結(jié)果有變化了的原因。默認(rèn)抽樣的頁(yè)數(shù)是8 pages,我們可以改動(dòng)默認(rèn)抽樣的頁(yè)數(shù),來達(dá)到提高準(zhǔn)確率的功效。但同樣付出的代價(jià)就是,在抽樣時(shí)的消耗的I/O 和相關(guān)資源。

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄

我們是可以定期對(duì)一些大表進(jìn)行 analyze table 的,可以寫一個(gè)定期的運(yùn)行的腳本來完成此事,盡量達(dá)到統(tǒng)計(jì)分析的準(zhǔn)確性。但通常一般都是通過自動(dòng)觸發(fā)的方式來完成這樣的工作。

而我們可以進(jìn)行一個(gè)測(cè)試,關(guān)于MYSQL的索引和真是的表信息之間是否有差距。

1 我們將需要檢驗(yàn)的字段進(jìn)行distinct 并且 count 返回的數(shù)據(jù)和我們建立索引的數(shù)據(jù)進(jìn)行比對(duì),看看是否有問題,對(duì)比兩張圖中的數(shù)據(jù),可以清晰的發(fā)現(xiàn),索引中的Cardinality 和實(shí)際中的字段的數(shù)據(jù)比較,是不一樣的。

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄

如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄

其實(shí)我們已經(jīng)操作了analyze table 但是我們依然沒有得到準(zhǔn)確的數(shù)字,在平時(shí)這可能不會(huì)有什么問題,但如果是較大的表例如上千萬(wàn)的表,如果這方面錯(cuò)的比較錯(cuò),會(huì)對(duì)執(zhí)行計(jì)劃產(chǎn)生問題,這時(shí)候可能就需要我們通過手動(dòng)的方式來更新某些表的記錄。

update mysql.innodb_table_stats set n_rows = 300024 where database_name = 'employees' and table_name = 'employees';

同理也可以更新 innodb_index_stats表里面的數(shù)據(jù)

以上方法僅僅使用于統(tǒng)計(jì)分析的不準(zhǔn)確嚴(yán)重影響到了執(zhí)行計(jì)劃,一般我們還是不要?jiǎng)酉到y(tǒng)中的統(tǒng)計(jì)分析表,另外這樣做的另一個(gè)問題就是, 你的表不會(huì)頻繁更新的操作,并且你要找好自己更新數(shù)值的時(shí)間點(diǎn)。

看完上述內(nèi)容,你們掌握如何手動(dòng)更新MYSQL 表的統(tǒng)計(jì)分析記錄的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI