分区表、PostgreSql做分区表、建立分区索引、按照年月分区、删除分区

news/2024/7/9 22:42:54 标签: postgresql, 数据库

什么是分区表

分区表是一种将表按照特定规则分割成多个子表的技术。这些子表被称为分区,每个分区可以存储特定范围或特定条件下的数据。分区表可以基于列值、时间范围、列表等条件进行分区。使用分区表可以提高查询性能,简化数据管理,并提高数据库的可维护性。

分区表的作用

性能提升:通过将数据分散到多个子表中,可以提高查询性能。例如,当表中包含大量数据时,分区表可以减少查询的响应时间,因为数据库系统只需要在较小的分区上执行查询,而不是在整个表上执行。

数据管理:分区表可以简化数据管理。例如,可以根据时间将数据分区,每个分区代表一个时间段。这样可以更轻松地删除旧数据、备份特定时间段的数据,或者对特定时间段的数据执行维护操作。

维护和管理:分区表可以使维护更加灵活。例如,可以针对特定的分区执行索引重建或优化,而不会影响到其他分区。此外,备份和恢复也可以更加精确地针对特定的分区进行。

分区表的优缺点

优点:

提高查询性能:减少了在大表上执行的查询时间。
简化数据管理:可以根据特定的标准对数据进行分割和管理。
灵活性:可以根据需要添加或删除分区,而无需影响到整个表的结构和性能。

缺点:

设计和维护成本较高:需要仔细规划分区策略,并定期进行维护和管理。
可能会导致性能问题:如果分区策略不当,可能会导致一些分区过于庞大,影响查询性能。
不是所有的操作都支持:一些操作(如全表扫描)可能需要特殊处理才能在分区表上执行。

举个栗子

现在有表testfenqu
中有字段id、datetime。时间的格式为yyyyMMdd

现在需要按照时间年月进行分区,分为12个区,即每个月一个分区

set client_encoding='utf-8';

create or replace function fun_testfenqu_part(iflag int,vyear varchar,imonPno int)
declare
	imonS   int;
	imonE   int;
	imonNo  int;
	idays  int;
	c_Sql  varchar;
	vPartymTab  varchar;
begin
	if iflag = 12 -- truncate 年月分区 vyear为yyyyMM格式
	then
		if length(vyear) <> 6
		then
			raise notice '参数错误%',vyear;
			return;
		end if;
		c_sql := 'truncate table testfenqu_pym'||vyear; -- “||”为拼接
		execute c_sql;
		return ;
	end if;

	if iflag = 13 -- drop 年月分区 vyear为yyyyMM格式
	then
		if length(vyear) <> 6
		then
			raise notice '参数错误%',vyear;
			return;
		end if;
		c_sql := 'drop table testfenqu_pym'||vyear; -- “||”为拼接
		execute c_sql;
		return ;
	end if;
----下面为删除 创建
	if(imonPno < 2 or 0 != 12%imonPno)
	then
		imonPno := 2;
	end if;
	imonNo := 1;
	while(imonNo <= imonPno)
	loop
		idays := 32;
		imonS := (imonNo-1)*(12/imonPno)+1;
		imonE := imonNo*(12/imonPno);
		vPartymTab := 'testfenqu_pym'||vyear||trim(to_char(imonE,'00'));
		if(iflag = 10) --删除年月分区
		then
			c_sql := 'drop table '|| vPartymTab;
			execute c_sql;
		end if;
		if(iflag = 2) --创建年月分区
		then
			c_sql := 'create table '|| vPartymTab ||' partition of testfenqu for values from('''||vyear||trim(to_char(imonS,'00'))||'01'') to ('''||vyear||trim(to_char(imonE,'00'))||trim(to_char(idays,'00'))||''')';
			execute c_sql;
		end if;
		if(iflag = 3) --创建年月分区索引
		then
			c_sql := 'create index idx_'|| vPartymTab ||'_1 on' || vPartymTab||'(datetime)';
			execute c_sql;
		end if;
		
		imonNo := imonNo+1;
	end loop;
	return;
end;
$$ language plpgsql;


--建表
drop table testfenqu;
create table testfenqu(
	id int(8),
	datetime character(8)
)partition by range(datetime); --指定分区字段

create index idx_testfenqu_1 on public.testfenqu using btree(datetime);  --建立索引

select fun_testfenqu_part(2,'2024',2);--2 创建年月分区 2024 年份  2 分为两个区 1-6、6-12

select fun_testfenqu_part(3,'2024',2);--2 创建年月分区索引
select fun_testfenqu_part(10,'2024',4); --删除年月分区

http://www.niftyadmin.cn/n/5463786.html

相关文章

Layui三级联动插件使用方法

Layui高版本中没有在提供三级联动这个动画了&#xff0c;而是封装成了一个插件&#xff0c;使用方式也很简单 官网 省市县区三级联动下拉选择器 layarea - Layui 第三方扩展组件平台 (layuion.com)https://dev.layuion.com/extend/layarea/#doc html页面约束 整个选择器需要…

c++初阶-----STL---string的使用

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

蓝桥杯考前复习二

1.快速幂 public static long qmi(long a, long b, long p) {long r 1;while (b ! 0) {if ((b & 1) 1) {r (r * a) % p;}b >> 1;a a * a % p;}return r;} 2.Java日期类 日期问题暂更 3.日期问题模板 暂更 4.状态机DP 1.松散子序列 - 蓝桥云课 (lanqiao.cn…

红米手机Redmi 不会自动弹出USB调试选项,如何处理?(红米小米均适用)

参考&#xff1a; 红米手机Redmi 不会自动弹出USB调试选项&#xff0c;如何处理&#xff1f;&#xff08;红米小米均适用&#xff09; - 知乎 以红米9A为例&#xff1b; 【设置】菜单进入后&#xff0c;找到【我的设备】&#xff0c; 选择【全部参数】&#xff0c; 对准miui版…

低代码与数智化OA:重塑企业办公新生态

随着信息技术的飞速发展&#xff0c;企业对于办公自动化的需求日益强烈。传统的OA系统已经难以满足现代企业的多样化需求&#xff0c;而低代码与数智化OA的结合&#xff0c;正成为推动企业办公升级的重要力量。 低代码技术的崛起 随着数字化转型的深入发展&#xff0c;低代码技…

Docker 轻量级可视化工具 Portainer

1. 是什么 它是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便管理Docker环境&#xff0c;也包括单机环境和集群环境。 2. 安装 官网&#xff1a;Kubernetes and Docker Container Management Software 安装路径&#xff1a;Install the Compose plug…

Windows 11中卸载驱动程序的几种方法,总有一种适合你

序言 设备驱动程序是允许Windows与硬件设备通信的程序。没有它们,计算机将无法运行内部的某些组件。如果你PC上的其中一个设备驱动程序引发了问题,你可能希望完全删除它。 Windows 11使消除不需要的设备驱动程序变得相当容易。你可以从设备管理器、设置应用程序、控制面板或…

【VMware Workstation】公司所有主机和虚拟机ip互通,以及虚拟机目录迁移

文章目录 1、场景2、环境3、实战3.1、所有主机和虚拟机ip互通Stage 1 : 【虚拟机】设置为桥接模式Stage 2 : 【虚拟机】设置ipStage 3 : 【路由器】ARP 静态绑定MACStage 3-1 ping 路由器 ipStage 3-2 【静态绑定】虚拟机查看mac地址Stage 3-3 【静态绑定】路由器ARP 静态绑定 …