統(tǒng)計(jì)數(shù)據(jù)的重要性相信了解ORACLE數(shù)據(jù)庫的都非常清楚,他是生成執(zhí)行計(jì)劃的唯一標(biāo)準(zhǔn),所以統(tǒng)計(jì)數(shù)據(jù)是否準(zhǔn)確直接影響到執(zhí)行計(jì)劃的正
統(tǒng)計(jì)數(shù)據(jù)的重要性相信了解Oracle數(shù)據(jù)庫的都非常清楚,他是生成執(zhí)行計(jì)劃的唯一標(biāo)準(zhǔn),所以統(tǒng)計(jì)數(shù)據(jù)是否準(zhǔn)確直接影響到執(zhí)行計(jì)劃的正確性, 關(guān)于MYSQL雖然沒有ORACLE那么多維度的統(tǒng)計(jì)數(shù)據(jù)(比如直方圖)但是還是有的,MYSQL 5.6后分為2種統(tǒng)計(jì)數(shù)據(jù)。
1、永久化的統(tǒng)計(jì)數(shù)據(jù)
默認(rèn)的5.6.6后使用時(shí)這種方式,影響他的參數(shù)有
innodb_stats_persistent_sample_pages 每次采樣的塊數(shù),默認(rèn)為20
innodb_stats_auto_recalc 是否開啟自動(dòng)收集,默認(rèn)為修改量超過10%的數(shù)據(jù)
innodb_stats_persistent 默認(rèn)為ON,是否使用永久化的統(tǒng)計(jì)數(shù)據(jù)
永久化的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)在innodb_index_stats和innodb_table_stats中,官方文檔說統(tǒng)計(jì)數(shù)據(jù)并非實(shí)時(shí)的,也就是收集統(tǒng)計(jì)數(shù)據(jù)會(huì)滯后幾分鐘,如果想要及時(shí)的更新統(tǒng)計(jì)
數(shù)據(jù)需要手動(dòng)執(zhí)行ANALYZE TABLE(In some cases, statistics
recalculation may be delayed by a few seconds. If up-to-date statistics are
required immediately after changing significant portions of a table, run ANALYZE
TABLEto initiate a synchronous (foreground) recalculation of statistics)
如果統(tǒng)計(jì)數(shù)據(jù)不準(zhǔn)可能需要修改innodb_stats_persistent_sample_pages的值更大,如果analyze table過慢可以考慮減少innodb_stats_persistent_sample_pages的值更小。這兩個(gè)表為INNODB的表
2、非永久化的統(tǒng)計(jì)數(shù)
如果設(shè)置innodb_stats_persistent為OFF就使用這種方式的統(tǒng)計(jì)數(shù)據(jù),這種方式的統(tǒng)計(jì)數(shù)據(jù)在數(shù)據(jù)庫重啟后就丟失,他的統(tǒng)計(jì)數(shù)據(jù)保存在STATISTICS,TABLES兩個(gè)表中,他們是MEMORY引擎的表,這種方式受影響的參數(shù)
innodb_stats_persistent 設(shè)置為OFF
innodb_stats_transient_sample_pages 默認(rèn)為8,為采樣塊數(shù)
innodb_stats_on_metadata 英文描述To have statistics updated when metadata statements such as SHOW TABLE STATUS
or SHOW INDEX are run, or when accessing the INFORMATION_SCHEMA.TABLES or
INFORMATION_SCHEMA.STATISTICSt ables, execute the statement SET GLOBAL
innodb_stats_on_metadata=ON
當(dāng)innodb_stats_persistent設(shè)置為ON的時(shí)候,默認(rèn)innodb_stats_on_metadata是OFF的,因?yàn)樗鼤?huì)影響SHOW TABLE STATUS等的速度
最后我們?cè)賮砗?jiǎn)單描述一下ORCALE的統(tǒng)計(jì)數(shù)據(jù)收集的策略,ORACLE 10G,11G都是通過自動(dòng)化的作業(yè)來收集,默認(rèn)的11G周1到周5晚上10點(diǎn)開始收集統(tǒng)計(jì)數(shù)據(jù),周末則是早上6點(diǎn)開始,當(dāng)然這種收集統(tǒng)計(jì)數(shù)據(jù)并不是全部收集,ORACLE會(huì)把修改數(shù)量超過10%的TABLES記錄到mon_mods_all$內(nèi)部表中,然后對(duì)這些表進(jìn)行收集,這樣來保證統(tǒng)計(jì)數(shù)據(jù)能夠盡可能的描述數(shù)據(jù)的分布,同時(shí)ORACLE會(huì)通過謂詞的使用來判定是否收集直方圖, 謂詞的使用記錄在COL_USAGE$內(nèi)部視圖中,直方圖用于判定數(shù)據(jù)的傾斜,MYSQL在這方面視乎還沒有。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com