【DM8】分区表介绍

1 使用分区表的原因

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

2 分区的概念

DM 采用子表方式创建分区表,分区表作为分区主表,而每一个分区以一个子表实体存在,即每一个分区都是一个完整的表,一般命名为主表名_分区名。对于水平分区,子表跟主表具有相同的逻辑结构,即分区子表与分区主表有相同的列定义和约束定义。在 DM 分区表中,主表本身不存储数据,所有数据只存储在子表中,从而实现不同分区的完全独立性。水平分区子表删除后,会将子表上的数据一起删除。
由于每一个分区都以一个子表作为实体,那么不同分区可以存储于相同表空间,也可以位于不同的表空间中。将这些分区放在不同的表空间中具有以下的好处:

  • 减少所有数据都损坏的可能性,一个表空间损坏不影响其他表空间,提高可用性;
  • 恢复时间大大减少;
  • 可以将同一个表中的数据分布在不同的磁盘上,从而均衡磁盘上的 I/O 操作;
  • 提高了表的可管理性、可利用性和访问效率。

分区操作对现存的应用和运行在分区表上的标准 DML 语句来说是透明的。但是,可以通过在 DML 中使用分区子表名字来对应用进行编程,使其充分利用分区的优点。

3 分区表的分类

达梦数据库 DM 支持对表进行水平分区。对于水平分区,提供以下分区方式:

范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;

列表(list)水平分区:通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。例如,可以对表上的 status 列的值在(‘A’,‘H’,‘O’)放在一个分区,值在(‘B’,‘I’,‘P’)放在另一个分区,以此类推;

哈希(hash)水平分区:通过指定分区编号来均匀分布数据的一种分区类型,通过在 I/O 设备上进行散列分区,使得这些分区大小基本一致;

多级分区表:按上述三种分区方法进行任意组合,将表进行多次分区,称为多级分区表。

4 分区表的优点

由于 DM 划分的分区是相互独立且可以存储于不同的存储介质上的,完全可满足企业高
可用性、均衡 IO、降低维护成本、提高查询性能的要求。

5 堆表和索引组织表的区别

达梦创建表默认的是索引组织表
堆表(FLAT)按顺序插入,插入速度快但是查询效率不高
索引组织表(CLUSTER)查询速度快,插入慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值