翼度科技»论坛 编程开发 mysql 查看内容

数仓如何进行表级控制analyze?

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
摘要: 介绍如何设置采样大小和表级控制analyze。
本文分享自华为云社区《GaussDB(DWS) 如何表级控制analyze》,作者:leapdb。
一、控制采样大小

【设置全局采样大小】
通过参数default_statistics_target设置全局默认采样大小。
  1. a.default_statistics_target>0,表示按固定值方式采样。取值范围:(0, 10000]
  2. analyze采样大小 = default_statistics_target * 300;
  3. b.default_statistics_target<0,表示按百分比方式采样。取值范围:[-100, 0)
  4. analyze采样大小 = (-1) * default_statistics_target * 表的估算大小。
复制代码
一般表级采样大小高于全局采样大小。历史原因,813及以下版本default_statistics_target设置负数时,全局采样大小优先级高。
二、控制analyze开关

【全局开关参数】
  1. attstattarget取值范围从-101到10000:
  2. [-101~-1) 表示使用百分比计算采样大小。采样大小 = 表估算条数 * (-1) * (attstattarget + 1) / 100
  3. -1 表示未设置,使用全局参数default_statistics_target计算采样大小。采样大小 = default_statistics_target * 300
  4. 0 表示该列不进行采样。
  5. [1,10000] 表示使用固定值计算采样大小。采样大小 = attstattarget * 300
  6. ALTER TABLE table_name ALTER column_name SET STATISTICS 200; --把采样大小调整为60000
  7. ALTER TABLE table_name ALTER column_name SET STATISTICS PERCENT 2; --把采样大小调整为2%
复制代码
【表级开关参数】
关闭“动态采样”,“轮询采样”和手动analyze等所有形式的统计信息收集。(适用于所有版本)
  1. autovacuum --后台autovacuum线程开关参数
  2. autovacuum_mode --后台autovacuum任务参数(vacuum:仅作vacuum;analyze:仅作analyze;mix:默认参数,vacuum和analyze都做)
  3. autoanalyze --动态采样控制参数
  4. autoanalyze_mode --动态采样类型控制参数,820及以上支持,813及以下都是normal类型
复制代码
820及以上版本,支持表级控制“统计信息自动收集模式”。也可以锁定统计信息。
  1. postgres=# select 'ALTER TABLE t1 ALTER '||attname||' SET STATISTICS 0;' from pg_attribute where attnum > 0 and attrelid='t1'::regclass;
  2. ?column?                     
  3. -------------------------------------------------
  4. ALTER TABLE t1 ALTER fooid SET STATISTICS 0;
  5. ALTER TABLE t1 ALTER foosubid SET STATISTICS 0;
  6. ALTER TABLE t1 ALTER fooname SET STATISTICS 0;
  7. (3 rows)
  8. 执行以上拼接出来的SQL,修改所有列的采样大小为0即可。再次analyze时则报没有列可做analyze,即实现了analyze关闭。
  9. postgres=# analyze t1;
  10. INFO:  No columns in "public.t1" can be used to collect statistics.
  11. ANALYZE
复制代码
 
点击关注,第一时间了解华为云新鲜技术~

来源:https://www.cnblogs.com/huaweiyun/p/17264380.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具