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

如何,进行,控制,analyze · 浏览次数 : 51

小编点评

**采样大小和表级控制分析** **采样大小** * 设置全局采样大小:`default_statistics_target` 参数,默认值为 300。 * 设置表级采样大小:`pg_attribute->attstattarget` 用于设置每列采样大小。 **分析开关** * 全局开关参数 `autovacuum` 控制自动分析开关,默认值为 `true`。 * 表级开关参数控制动态采样开关、轮询采样开关和手动分析开关。 **历史原因** * 813 及以下版本默认使用全局采样大小,如果 `default_statistics_target` 设置负数,全局采样大小优先级高。 * 820 及以上版本支持表级控制,允许设置表级采样大小。

正文

摘要: 介绍如何设置采样大小和表级控制analyze。

本文分享自华为云社区《GaussDB(DWS) 如何表级控制analyze》,作者:leapdb。

一、控制采样大小

【设置全局采样大小】

通过参数default_statistics_target设置全局默认采样大小。

a.default_statistics_target>0,表示按固定值方式采样。取值范围:(0, 10000]
analyze采样大小 = default_statistics_target * 300;

b.default_statistics_target<0,表示按百分比方式采样。取值范围:[-100, 0)
analyze采样大小 = (-1) * default_statistics_target * 表的估算大小。

【设置表级采样大小】

pg_attribute->attstattarget 用于设置每列采样大小,所有列的最大值作为表采样大小。

attstattarget取值范围从-101到10000:
[-101~-1) 表示使用百分比计算采样大小。采样大小 = 表估算条数 * (-1) * (attstattarget + 1) / 100
-1 表示未设置,使用全局参数default_statistics_target计算采样大小。采样大小 = default_statistics_target * 300
0 表示该列不进行采样。
[1,10000] 表示使用固定值计算采样大小。采样大小 = attstattarget * 300
ALTER TABLE table_name ALTER column_name SET STATISTICS 200; --把采样大小调整为60000
ALTER TABLE table_name ALTER column_name SET STATISTICS PERCENT 2; --把采样大小调整为2%

一般表级采样大小高于全局采样大小。历史原因,813及以下版本default_statistics_target设置负数时,全局采样大小优先级高。

二、控制analyze开关

【全局开关参数】

autovacuum --后台autovacuum线程开关参数
autovacuum_mode --后台autovacuum任务参数(vacuum:仅作vacuum;analyze:仅作analyze;mix:默认参数,vacuum和analyze都做)
autoanalyze --动态采样控制参数
autoanalyze_mode --动态采样类型控制参数,820及以上支持,813及以下都是normal类型

【表级开关参数】

关闭“动态采样”,“轮询采样”和手动analyze等所有形式的统计信息收集。(适用于所有版本)

postgres=# select 'ALTER TABLE t1 ALTER '||attname||' SET STATISTICS 0;' from pg_attribute where attnum > 0 and attrelid='t1'::regclass;
 ?column?                     
-------------------------------------------------
 ALTER TABLE t1 ALTER fooid SET STATISTICS 0;
 ALTER TABLE t1 ALTER foosubid SET STATISTICS 0;
 ALTER TABLE t1 ALTER fooname SET STATISTICS 0;
(3 rows)
执行以上拼接出来的SQL,修改所有列的采样大小为0即可。再次analyze时则报没有列可做analyze,即实现了analyze关闭。
postgres=# analyze t1;
INFO:  No columns in "public.t1" can be used to collect statistics.
ANALYZE

820及以上版本,支持表级控制“统计信息自动收集模式”。也可以锁定统计信息。

alter table lineitem set (analyze_mode='backend'); --只做轮询采样analyze
alter table lineitem set (analyze_mode='runtime'); --只做动态采样analyze
alter table lineitem set (analyze_mode='frozen'); --禁止做所有形式的analyze
alter table lineitem set (analyze_mode='all'); --恢复表analyze模式的默认行为
select pg_options_to_table(reloptions) from pg_class where relname='lineitem'; --查看修改效果
设置成backend即关闭了动态采样,只做轮询采样
设置成frozen即关闭了所有形式analyze,但无统计信息时还是会触发一次动态采样,确保至少有基本统计信息可用。

 

点击关注,第一时间了解华为云新鲜技术~

与数仓如何进行表级控制analyze?相似的内容:

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

摘要: 介绍如何设置采样大小和表级控制analyze。 本文分享自华为云社区《GaussDB(DWS) 如何表级控制analyze》,作者:leapdb。 一、控制采样大小 【设置全局采样大小】 通过参数default_statistics_target设置全局默认采样大小。 a.default_s

数仓性能调优:如何进行函数下推

摘要:本文主要描述下函数在满足特征的前提下可以把函数属性定义为下推属性。 本文分享自华为云社区《GaussDB(DWS)性能调优:函数下推》,作者:譡里个檔 。 DWS作为MPP架构的数仓产品,其性能优势主要在分布式计算上。默认情况下,DWS为了保证结果的正确性,自定义函数默认属性是不下推的,这会导

数仓在线运维:如何进行在线增删CN?

摘要:集群运行过程中,根据集群的综合负载和业务接入情况进行分析:增加CN可以适当降低CPU消耗,增大接入连接数,分散CN节点业务压力,根据实际情况来识别是否要增加CN,如果是提升集群容量和扩展比能力,建议进行扩容操作。 本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】在线运维-在线增

教你如何进行数仓字符串、二进制、十六进制互转

现网中遇到很多小伙伴不清楚字符串与进制之间的转换方法,其实在GaussDB(DWS)中,进制转换是非常方便的。

实时数仓构建:Flink+OLAP查询的一些实践与思考

以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓**,其技术方案的选择是我们在技术选型过程中最常见的问题之一。也是很多公司和业务支持过程中会实实在在遇到的问题。 很多人一提起实时数仓,就直接大谈特谈Hudi,Flink的流批一体等,但实际上,**实时数仓包括任何架构体系的构建如...

数仓专家面对面 | 为什么我选择GaussDB(DWS)

摘要:你知道数仓是如何应运而生的吗?你了解数仓未来的发展趋势吗?想知道国内数仓专家的看法吗? 导语 数据仓库的发展一直是备受关注的议题,随着近年来技术的不断演进,数仓也在更新迭代。 你知道数仓是如何应运而生的吗?你了解数仓未来的发展趋势吗?想知道国内数仓专家的看法吗? 今天我们邀请到了华为云数据仓库

详解数仓中sequence的应用场景及优化

摘要:本文简单介绍sequence的使用场景及如何修改sequence的cache值提高性能。 本文分享自华为云社区《GaussDB(DWS)关于sequence的那些事》,作者:Arrow0lf 。 什么是sequence sequence,也称作序列,是用来产生唯一整数的数据库对象。序列的值按照

文盘Rust -- rust 连接云上数仓 starwift

最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番。 Starwfit 是京东云自主研发的新一代云原生数据仓库,通过存算分离降低了存储成本,同时兼具性能和扩展弹性。其写入和查询速度可达到传统数据仓库的数倍,为用户提供实时数据分析能力。广泛应用于流量分析、精准营销、用户画像、广

掌握把“烂”SQL牢牢关进笼子里的密钥

摘要:本文通过5个部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把“烂”SQL牢牢关进笼子里。 本文分享自华为云社区《直播回顾 | 掌握把“烂”SQL牢牢关进笼子里的密钥》,作者: 华为云社区精选 。 混合负载场景下,怎样避免“烂”语句对数据库系统的冲击?如何

云小课|使用SQL加密函数实现数据列的加解密

摘要:数据加密作为有效防止未授权访问和防护数据泄露的技术,在各种信息系统中广泛使用。作为信息系统的核心,GaussDB(DWS)数仓也提供数据加密功能,包括透明加密和使用SQL函数加密。 本文分享自华为云社区《看GaussDB(DWS)如何使用SQL加密函数实现数据列加解密》,作者:Hello EI