Partitioning Strategies

简介: 001、三种基本分区方式:Range、Hash、List。 002、Single-Level Partitioning     表以三种分区方式之一进行分区,使用一列或多列作为分区键。
001、三种基本分区方式:Range、Hash、List。

002、Single-Level Partitioning
    表以三种分区方式之一进行分区,使用一列或多列作为分区键。

    Range Partitioning
    范围分区将数据按照分区键的范围值分配到各个分区。这是最常见的分区方式,通常用于日期。
    每个分区有一个value less than语句,这指定一个不包含上界值的分区。任何高于或等于该上界值的数据会被添加到下一个分区。所有的分区,除了第一个分区,都有一个隐含的下界值,该值就是前一个分区的values less than语句中指定的值。
    maxvalue值用来指定最高的分区。maxvalue代表一个虚拟无限大的分区键值,比其它任何分区键值都高(包括Null)。

    Hash Partitioning
    哈希分区是Oracle将哈希算法运用到指定的分区键,通过哈希运算将数据分布到各个分区。哈希算法会将数据平均地分布到所有分区,这使得分区基本上尺寸相等。
    哈希分区是将数据均匀分布在设备上的理想方式。哈希分区也是范围分区的一个简单的备用选择,尤其是当没有明显的分区键或没有历史数据的时候。

    List Partitioning
    列表分区可以显式地控制一个分区有多少行,这通过为每个分区的分区键指定一系列的离散的值来实现。列表分区的优势在于你可以将无序和无关的数据集以普通的方式组合在一起。例如,一个以区域列为分区键的表,东部销售区域可能包含纽约、弗吉尼亚,以及佛罗里达。
    通过在列表分区中使用默认分区,使得你可以避免为一个按列表进行分区的表执行所有可能的值。那些没有指定给任何分区的行不会报错。

003、Composite Partitioning
    Composite Partitioning是将几种基本的分区方式结合起来的分区方式。一张表以一种数据分区方式进行分区,每个分区进一步以第二种数据分布方式分成子分区。对于每个给定的分区,其子分区代表这逻辑上的数据的子集。
    Composite Partitioning支持历史操作,例如添加新的范围分区,同时也提供更高等级的潜在
partition pruning以及通过子分区得到的更细粒度的数据存放。

    Composite Range-Range Partitioning
    Composite Range-Range Partitioning允许数据从两个维度进行逻辑分区,例如按照order_date进行分区,再按照shipping_date进行子分区。

    Composite Range-Hash Partitioning
    Composite Range-Hash Partitioning使用范围进行分区,每个分区再按哈希进行子分区。Composite Range-Hash Partitioning提供了改良的范围分区的可管理性以及哈心分区的数据分布、条带化和并行的优势。

    Composite Range-List Partitioning
    Composite Range-List Partitioning使用范围进行分区,分区再按照list进行子分区。Composite Range-List Partitioning提供了反问分区的可管理性和list子分区的明确的可控性。

    Composite List-Range Partitioning
    Composite List-Range Partitioning是对于一个给定的list分区可以通过逻辑范围来进行子分区。例如,按照country_id进行list分区,再按照order_date进行范围子分区。

    Composite List-Hash Partitioning
    Composite List-Hash Partitioning将list分区再按hash进行子分区。例如,为了使用partition-wise joins.

    Composite List-List Partitioning
    Composite List-List Partitioning根据两个维度进行list分区。例如,按照country_id进行list分区,再按照sales_channel进行list子分区。


相关文章
|
2月前
|
关系型数据库 MySQL 索引
WHERE Clause Optimization
本节探讨了WHERE子句的优化方法,虽然示例基于SELECT语句,但也适用于DELETE和UPDATE语句。MySQL自动执行多种优化,例如仅计算一次索引使用的常量表达式、快速检测无效表达式、合并HAVING和WHERE子句、优先读取常量表、寻找最佳连接组合、使用内存中的临时表、选择最佳索引以及在某些情况下仅使用索引树解析查询,从而提升查询效率。
|
算法 搜索推荐 数据库
一个有点咬文嚼字的 sorting 和 ordering
为什么排序算法的英文是 sorting 而不是 ordering。
135 0
|
算法 数据挖掘 开发者
|
算法 数据挖掘 开发者
|
算法 关系型数据库 MySQL
Fundamental Techniques for Order Optimization
这是一篇1996年的老paper了,主要讲解了IBM DB2如何针对query当中的有序性进行优化。但对于后续physical property的优化有较为深远的影响,由于DB2的优化器起源于System-R以及其后续演进的starburst,因此延续了system-R中的interesting order和order property的概念。关于system-R的介绍请看之前的文章。 order这种physical property并不只限于order by算子,基于有序的group by/distinct等,都会利用到数据的排序操作,而排序本身就是比较昂贵的计算,因此应该对其做尽可能的优化
224 0
Fundamental Techniques for Order Optimization
|
SQL 算法 关系型数据库
Optimizing Queries over Partitioned Tables in MPP Systems
随着互联网数据的爆炸性增长,传统数据库系统在单表数据容量方面承受了越来越大的压力。以前公司内部的数据库,存放的主要是来自公司业务或内部管理系统的信息,中小型公司甚至一个MySQL实例就搞定了。但现在数据源不仅更丰富,数据量也在指数级增长,从业务的角度,基于hash/range的分区表变得越来越有吸引力。
256 0
Optimizing Queries over Partitioned Tables in MPP Systems
|
SQL 人工智能 分布式计算
Incorporating Partitioning and Parallel Plans into the SCOPE optimizer
这篇paper中讨论是的Microsoft的cosmos DB,其本身是一个海量数据的大规模计算平台,有些类似hadoop,使用的是一种类SQL的脚本,叫做SCOPE,针对SCOPE的优化器负责生成最优的执行计划。在1998年前后Microsoft基本丢弃了Sybase原有的优化器实现,并由Graefe主导重写了基于cascades的优化器。因此和Microsoft所有其他的数据库产品一样,SCOPE optimizer也是基于Cascades的transformation-based的优化器。
350 0
Incorporating Partitioning and Parallel Plans into the SCOPE optimizer
|
SQL 移动开发 算法
New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees
MySQL无疑是现在开源关系型数据库系统的霸主,在DBEngine的最新排名中仍然稳居第2位,与第3位SQL Server的积分差距并不算小,可以说是最受欢迎,使用度最高的数据库系统,这一点看看有多少新型数据库要兼容MySQL的协议和语法就知道了。
318 0
New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees
|
关系型数据库 MySQL
|
MySQL 关系型数据库
下一篇
无影云桌面