数据库:分区

2023-03-18 17:21:37 浏览数 (1)

分区机制减少管理负担,是因为与在一个大对象上执行操作相比,在小对象上执行同样的操作更为容易,速度更快,而且占用的资源也更少。

假如数据库中有一个10G的索引,如果你需要重建这个索引,而该索引未分区,那就必须将整个10G的索引作为一个工作单元来重建。尽管可以在线重建索引,但是要重建完整的10G B索引,还是需要占用大量的资源。

在线重建索引时,需要至少10GB的空闲存储空间来存放这两套索引,此外你还需要一个临时事物日志表,来记录重建索引期间表上发生的修改。如果将这个索引划分为10个1GB的分区,那就可以一个接一个地单独重建各个索引分区,而且现在所需的空闲存储空间只有原来的10%。此外单个索引分区的重建速度也会更快(可能是原来的10倍),因而需要向新索引合并的事物也会更少。

如果10GB索引的重建在即将完成之时发生了系统或软件故障,那么我们所做的全部努力是不是全部付诸东流了。如果把问题分解,将索引划分为1GB的分区,那么最多只会丢掉重建工作的10%。

分区应用的最后一个重要场景是,有时你可能只需要重建10%的索引,比如只需对最新的数据(活跃数据)进行重组,但是不需要对旧数据(相对静态的数据)重组。

分区的好处它能够增强一些SQL语句(Select,Insert,Update,Delete,Merge)的性能。这些SQL分为两类,一类是修改信息的语句,另一类是读取信息的语句。

并行DML

数据库中的修改数据的语句都能以并行的方式执行。在一个有充足I/O带宽的多CPU主机上,这样的大规模DML操作所带来的速度提升可能会相当显著。

查询性能

在提升只读查询(Select语句)的性能方面,分区会使用下面两种特殊的操作。

分区修剪:处理查询时不考虑某些分区内的数据。

并行操作:并行全表扫描和并行索引区间扫描就是这种操作的例子。

  1. 分区能降低OLTP系统上的争用,从而增强系统的并发处理能力。我们都知道分区机制会将一个表的数据分散到多个物理分区中去,如果某个未分区的表(也就是某个段)上有着大量争用,那么将单个段打散成多个段也会相应的降低争用。

分区表的方法

  1. 区间分区
  2. 散列分区
  3. 列表分区
  4. 间隔分区
  5. 引用分区
  6. 间隔引用分区
  7. 虚拟列分区
  8. 组合分区
  9. 系统分区

0 人点赞