本文分享自华为云社区《GaussDB(DWS)如何表级控制analyze云社区华为云》,作者:leapdb。一、控制采样大小 【设置全局采样大小】 通过参数defaultstatisticstarget设置全局默认采样大小。a。defaultstatisticstarget0,表示按固定值方式采样。取值范围:(0,10000〕analyze采样大小defaultstatisticstarget300;b。defaultstatisticstarget0,表示按百分比方式采样。取值范围:〔100,0)analyze采样大小(1)defaultstatisticstarget表的估算大小。 【设置表级采样大小】 pgattributeattstattarget用于设置每列采样大小,所有列的最大值作为表采样大小。attstattarget取值范围从101到10000:〔1011)表示使用百分比计算采样大小。采样大小表估算条数(1)(attstattarget1)1001表示未设置,使用全局参数defaultstatisticstarget计算采样大小。采样大小defaultstatisticstarget3000表示该列不进行采样。〔1,10000〕表示使用固定值计算采样大小。采样大小attstattarget300ALTERTABLEtablenameALTERcolumnnameSETSTATISTICS200;把采样大小调整为60000ALTERTABLEtablenameALTERcolumnnameSETSTATISTICSPERCENT2;把采样大小调整为2 一般表级采样大小高于全局采样大小。历史原因,813及以下版本defaultstatisticstarget设置负数时,全局采样大小优先级高。二、控制analyze开关 【全局开关参数】autovacuum后台autovacuum线程开关参数autovacuummode后台autovacuum任务参数(vacuum:仅作analyze:仅作mix:默认参数,vacuum和analyze都做)autoanalyze动态采样控制参数autoanalyzemode动态采样类型控制参数,820及以上支持,813及以下都是normal类型 【表级开关参数】 关闭动态采样,轮询采样和手动analyze等所有形式的统计信息收集。(适用于所有版本)postgresselectALTERTABLEt1ALTERattnameSETSTATISTICS0;frompgattributewhereattnum0andattrelidt1::?column?ALTERTABLEt1ALTERfooidSETSTATISTICS0;ALTERTABLEt1ALTERfoosubidSETSTATISTICS0;ALTERTABLEt1ALTERfoonameSETSTATISTICS0;(3rows)执行以上拼接出来的SQL,修改所有列的采样大小为0即可。再次analyze时则报没有列可做analyze,即实现了analyze关闭。postgresanalyzet1;INFO:Nocolumnsinpublic。t1canbeusedtocollectstatistics。ANALYZE 820及以上版本,支持表级控制统计信息自动收集模式。也可以锁定统计信息。altertablelineitemset(analyzemodebackend);只做轮询采样analyzealtertablelineitemset(analyzemoderuntime);只做动态采样analyzealtertablelineitemset(analyzemodefrozen);禁止做所有形式的analyzealtertablelineitemset(analyzemodeall);恢复表analyze模式的默认行为selectpgoptionstotable(reloptions)查看修改效果设置成backend即关闭了动态采样,只做轮询采样设置成frozen即关闭了所有形式analyze,但无统计信息时还是会触发一次动态采样,确保至少有基本统计信息可用。 关注华为云开发者联盟点击下方,第一时间了解华为云新鲜技术 华为云博客大数据博客AI博客云计算博客开发者中心华为云