前言

在大型的企业应用或企业级的数据库应用中,要处理的数据量通常达到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。

达梦数据库分区表的使用相关推荐

  1. 达梦数据库 分区表实例

    达梦数据库 分区表实例 分区表 默认的表(索引组织表,无主键利用 rowid,并发不好) SQL> select para_name,para_value from v$dm_ini where ...

  2. DM8达梦数据库:达梦数据库分区表

    达梦数据库-二级分区表: 创建一个产品销售记录表 sales,记录产品的销量情况.由于产品只在几个固定 的城市销售,所以可以按照销售城市区号对该表进行 LIST 分区.再按照年份RANGE范围分区 示 ...

  3. 达梦数据库分区表介绍

    分区表的优点: 1.改善了查询性能 2.增加了可用性 3.维护方便 4.均衡 I/O 分区表的类型 垂直分区:子表上的列是主表上列的子集,应用场景较少(这里不做详细说明). 水平分区:子表跟主表具有相 ...

  4. 浅谈达梦数据库分区表

    分区表的优点: 1.改善了查询性能 2.增加了可用性 3.维护方便 4.均衡 I/O 分区表的类型 垂直分区:子表上的列是主表上列的子集,应用场景较少(这里不做详细说明). 水平分区:子表跟主表具有相 ...

  5. 【DM】达梦数据库中分区表的创建及查询操作

    文章目录 一.摘要 二.演示 范围分区表 LIST分区表 哈希分区表 多级分区表 一.摘要 达梦数据库对表是进行水平分区的:水平分区的方式有以下几种: 范围分区表 LIST分区表 哈希分区表 多级分区 ...

  6. 达梦数据库基础知识(十一)管理分区表和分区索引

    在大型的企业应用或企业级的数据库应用中,要处理的数据量通常达到TB级,对于这样的大型表执行全表扫描或者DML操作时,效率是非常低的. 为了提高数据库在大数据量读写操作和查询时的效率,达梦数据库提供了对 ...

  7. oracle向达梦迁移工作量,从Oracle安全移植到国产达梦数据库的DBA实践

    随着我国对信息安全和自主可控技术的日益重视,国产数据库在党政机关.军队和大型央企等行业中得到了快速应用.达梦数据库(以下简称DM)是国内数据库行业领军企业--达梦推出的一款自主可控的高性能数据库产品. ...

  8. dm7和mysql_【干货分享】达梦数据库DM7的新特性发布啦

    原标题:[干货分享]达梦数据库DM7的新特性发布啦 近日,DM7正式发布新特性.作为一款广受业内人士认可的国产数据库产品,最突出的特征就是它良好的兼容性,完善的功能以及超出客户期望的优秀性能表现:本次 ...

  9. 达梦数据库-部署及日常工具使用

    DM 数据库安装方式 1.图形化安装 2.命令行安装 3.自动化安装 单机部署 一.操作系统配置检查 1.内核版本大于2.6 [root@itsdata ~]# uname -r 3.10.0-116 ...

最新文章

  1. [HAOI2009]毛毛虫
  2. android so readelf.exe,android ndk中的工具使用
  3. superset安装配置
  4. Debug enterprise search menu
  5. kotlin 或 运算_Kotlin程序对两个数字执行算术运算
  6. php url传递 加号,坑爹的URL编码-PHP正确处理URL中的加号(+)
  7. vivado和modelsim联合仿真实现分频器——2的n次方分频
  8. FZU Problem 2198 快来快来数一数(矩阵快速幂 卡常数 +优化)
  9. 集成运算放大器之微分电路搭建
  10. 用计算机怎样搜wifi网,笔记本电脑搜索不到无线网络(Wifi)怎么办
  11. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)...
  12. 寻找发帖水王java_SWUST_OJ 水王发帖排序
  13. 用大数据“魔镜”照出电商假货
  14. 使用Python采集京东商品详情数据,并上传到拼多多商城中
  15. 纯JS实现懒加载+瀑布流布局
  16. 【Ajax】form表单
  17. 安卓系统培训!Android高级工程师系列学习路线介绍,详细的Android学习指南
  18. 澳大利亚将建12个光伏发电站
  19. 安徽科技学院 信网学院网络文化节 朱翔
  20. 出门问问又出音箱了,除了造型大变样,「工作地点」开始从家里转移到你的裤兜里

热门文章

  1. java jgeometry_7.2 在Java中操作几何体
  2. java数据脱敏处理,手机号,身份证号和银行卡号打码展示
  3. Windows控制台清屏
  4. Halcon双目结构光定位(2)-三维模板匹配及按照点云高度排序
  5. 淘宝有好货报名条件及玩法攻略
  6. python123csv格式清洗与转换_干净的数据 数据清洗入门与实践
  7. iptables(四)iptables匹配条件总结之一
  8. qiuguanzhu
  9. 十四、FLUENT中2D Space设置
  10. 云​大数据和计算技术周报(第47期) - 云+社区 - 腾讯云