021.PGSQL-调优3-审视和修改表定义:存储模型、分布方式、分布列、分区表、数据类型
1.选择存储模型(列式、行式)
行存:点查询(返回记录少,基于索引的简单查询)
增删改比较多
列存:统计分析类查询 (group 、join多)
即席查询(查询列不确定,行存无法确定索引)
2.选择分布方式
hash 散列在集群的各DN实例上
replication 集群中每个DN实例上都有一份全量表数据
建表时,最后加上 ( )distribute by hash(rid);
3.选择分布列
列值比较离散的作为分布列,支持多分布列,防止出现数据倾斜
检查是否出现数据倾斜
select xc_node_id -- DN
, count(1) from tablename group by xc_node_id order by xc_node_id desc;
不同DN相差超过5% 视为数据倾斜,超过10%必须要调整
4.使用局部聚簇
5.使用分区表
- 创建表空间
CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1'; CREATE TABLESPACE example2 RELATIVE LOCATION 'tablespace2/tablespace_2'; CREATE TABLESPACE example3 RELATIVE LOCATION 'tablespace3/tablespace_3'; CREATE TABLESPACE example4 RELATIVE LOCATION 'tablespace4/tablespace_4';
当结果显示为如下信息,则表示创建成功。
CREATE TABLESPACE
- 创建分区表
CREATE TABLE tpcds.customer_address ( ca_address_sk integer NOT NULL , ca_address_id character(16) NOT NULL , ca_street_number character(10) , ca_street_name character varying(60) , ca_street_type character(15) , ca_suite_number character(10) , ca_city character varying(60) , ca_county character varying(30) , ca_state character(2) , ca_zip character(10) , ca_country character varying(20) , ca_gmt_offset numeric(5,2) , ca_location_type character(20) ) TABLESPACE example1 DISTRIBUTE BY HASH (ca_address_sk) PARTITION BY RANGE (ca_address_sk) ( PARTITION P1 VALUES LESS THAN(5000), PARTITION P2 VALUES LESS THAN(10000), PARTITION P3 VALUES LESS THAN(15000), PARTITION P4 VALUES LESS THAN(20000), PARTITION P5 VALUES LESS THAN(25000), PARTITION P6 VALUES LESS THAN(30000), PARTITION P7 VALUES LESS THAN(40000), PARTITION P8 VALUES LESS THAN(MAXVALUE) TABLESPACE example2 ) ENABLE ROW MOVEMENT;
6.选择数据类型
如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint
表关联列尽量使用相同的数据类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下