达梦数据库分区表的使用

达梦数据库分区表的使用前言在大型的企业应用或企业级的数据库应用中,要处理的数据量通常达到TB级,对于这样的大型表执行全表扫描或者DML操作时,效率是非常低的。为了提高数据库在大数据量读写操作和查询时的效率,达梦数据库提供了对表和索引进行分区的技术,把表和索引等数据库对象中的数据分割成小的单位,分别存放在一个个单独的段中,用户对表的访问转化为对较小段的访问,以改善大型应用系统的性能。达梦数据库分区表主要包括范围…

大家好,又见面了,我是你们的朋友全栈君。

前言

在大型的企业应用或企业级的数据库应用中,要处理的数据量通常达到TB级,对于这样的大型表执行全表扫描或者DML操作时,效率是非常低的。
为了提高数据库在大数据量读写操作和查询时的效率,达梦数据库提供了对表和索引进行分区的技术,把表和索引等数据库对象中的数据分割成小的单位,分别存放在一个个单独的段中,用户对表的访问转化为对较小段的访问,以改善大型应用系统的性能。

达梦数据库分区表主要包括范围分区、哈希分区和列表分区三种方式, 企业可以使用合适的分区方法,如日期(范围)、区域(列表),对大量数据进行分区。由于达梦数据库划分的分区是相互独立且可以存储于不同的存储介质上的,完全可满足企业高可用性、 均衡IO、降低维护成本、提高查询性能的要求。今天我们主要讨论水平分区

一 创建分区表

1.创建范围分区表

create table r_t1 (pid int primary key ,id int)
partition by range (pid)
(partition p1 values less than (101),
partition p2 values less than (201));

在这里插入图片描述

将1-200的值录入到t_r1中。

begin
for i in 1..200 loop
insert into r_t1 values (i,i+1);
end loop;
end;

在这里插入图片描述
查看表r_t1的类型,显示为分区表。

select table_name,PARTITIONED from dba_tables where table_name='R_T1';

在这里插入图片描述
查看分区表的分区,显示为二个分区p1和p2。

select table_name,partition_name from dba_tab_partitions where table_name='R_T1';

在这里插入图片描述
查询分区表中的记录数。

SQL> select count(*) from r_t1 partition (p1);

在这里插入图片描述
这样一个范围分区就建立好了。

2.创建列表分区

create table l_t1 (id int,name varchar(20))
partition by list (name)
(partition p1 values  ('湖北'),
partition p2 values  ('湖南'),
partition p3 values  ('安徽'));

在这里插入图片描述
查看分区表的分区,显示为三个分区p1,p2,p3

SQL>select table_name,partition_name from dba_tab_partitions where table_name='L_T1';

在这里插入图片描述

3.创建哈希分区

SQL>CREATE TABLE sales01(sales_id INT, saleman CHAR(20),
saledate DATETIME, city  CHAR(10))
PARTITION BY HASH(city)
(PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4 );

在这里插入图片描述
如果不需指定分区表名,可以通过指定哈希分区个数来建立哈希分区表。

SQL>CREATE TABLE sales02(sales_id int, saleman char(20),
saledate DATETIME, city  CHAR(10)) PARTITION BYHASH(city)
PARTITIONS 4;

在这里插入图片描述
PARTITIONS后的数字表示哈希分区的分区数,STORE IN 子句中指定了哈希分区依 次使用的表空间。使用这种方式建立的哈希分区表分区名是匿名的,DM7 统一使用 DMHASHPART+分区号(从 0 开始)作为分区名。例如,需要查询 sales02第一个分区的数据,可执行以下语句:

SQL>SELECT* FROM sales02 PARTITION (DMHASHPART1);

在这里插入图片描述

二 增加分区

SQL> alter table r_t1 add partition p3 values less than(301);

在这里插入图片描述
查看分区数,可以看到新增了一个分区p3
在这里插入图片描述

三 删除分区

SQL> alter table r_t1 drop partition p3;

在这里插入图片描述
可以看到,新增的分区P3被删除了。

四 合并分区

Sql> alter table r_t1 merge partitions p1,p2 into partition p1_2;

在这里插入图片描述

五 拆分分区

SQL> alter table r_t1 split partition p1_2 at (100) into (partition p1,partition p2);

在这里插入图片描述

六 水平分区表的限制

  1. 分区列类型必须是数值型、字符型或日期型,不支持BLOB、CLOB、IMAGE、TEXT、 LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、时间间隔类型和用户自定义类型为分区列。
  2. 范围分区和哈希分区的分区键可以多个,最多不超过16列;LIST分区的分区键 必须唯一。
  3. 水平分区表指定主键和唯一约束时,分区键必须都包含在主键和唯一约束中。
  4. 水平分区表不支持临时表。
  5. 不能在水平分区表上建立自引用约束。
  6. 普通环境中,水平分区表的各级分区数的总和上限是 65535;MPP 环境下,水平 分区表的各级分区总数上限取决于INI参数MAX_EP_SITES,上限为2 ^( 16 – log2MAX_EP_SITES)。比如:当MAX_EP_SITES为默认值64时,分区总数上 限为1024。
  7. 不允许对分区子表执行任何DDL操作。
  8. 哈希分区支持重命名、删除约束、设置触发器是否启用的修改操作。
  9. 范围分区支持分区合并、拆分、增加、删除、交换、重命名、删除约束、设置触发 器是否生效操作。
  10. LIST分区支持分区增加、删除、交换、重命名、删除约束、设置触发器是否生效操作。
  11. LIST分区范围值不能为NULL。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140892.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LSD_SLAM「建议收藏」

    LSD_SLAM「建议收藏」LSDSLAM1.Overview三大模块2.Posetracking2.1直接法2.2LSD的直接法3.Depthmapping3.1Keyframeselection3.2DepthMapCreation(DepthMapPropagation)3.3DepthMapRefinement3.3.1参考图像帧选取3.3.2立体匹配策略3.3.3不确定性估…

    2022年6月6日
  • PSPNet介绍-语义分割

    PSPNet-PyramidSceneParsingNetwork核心模块是金字塔池化模块(pyramidpoolingmodule),它能够聚合不同区域的上下文信息,从而提高获取全局信息的能力。实验表明这样的先验表示(即指代PSP这个结构)是有效的,在多个数据集上展现了优良的效果。1.pyramidpoolingmodule该模块融合了4种不同金字塔尺度的特征,第一行…

    2022年4月5日
  • UE4/UE5 使用Unreal Datasmith完全教程

    UE4/UE5 使用Unreal Datasmith完全教程(2019.12.9)Datasmith功能已内置到虚幻4.24版本Datasmith支持导入Twinmotion:Twinmotion教程汇总(2021.4.2)Datasmith安装到4.20-4.23版本:UE4在4.20-23版本安装Datasmith插件(2021.3.30更新)Datasmith导出插件:Datasmith导出插件(2021.4.12更新)导入sketchup草图大师:草图大师SU导入Unity和虚幻UE4对比导入Revit2018.3+:UE4使用Da.

    2022年10月5日
  • Task 生成排队人数任务线程

    Task 生成排队人数任务线程Task 生成排队人数任务线程

    2022年4月24日
  • 最新 Linux 命令总结 大全[通俗易懂]

    今天,带来一篇Linux命令总结的非常全的文章,也是我们平时工作中使用率非常高的操作命令,命令有点多,建议小伙伴们可以先收藏后阅读。目录1.基本命令2.关机3.文件和目录4.文件搜索5.挂载一个文件系统6.磁盘空间7.用户和群组8.文件的权限使用“+”设置权限,使用“-”用于取消9.文件的特殊属性,使用“+”设置权限,使用“-”用于取消10.打包和压缩文件11.RPM包12.YUM软件包升级器13.deb包14.查看文件内容15.文本处理16

    2022年4月10日
  • 很黄很暴力 地球不同版本

    很黄很暴力 地球不同版本国际英语:toopornographic,tooviolent.江氏英语:toosimple,toonaive阿拉伯语:الاباحيهجدا،عنيفةجدا纽约:Veryyellow,veryboompower德语:sehrpornografisch,sehrgewalttaetig挪威语:veldigporno,v

    2022年10月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号