剪枝
云数据仓库分布式存储
GaussDB(DWS)采用水平分表的方式,将数据表格的元组按照一定的分布策略分散存储到多个节点。查询的时候可以通过查询条件过滤不必要的数据,快速定位到数据存储位置,从而极大提升 数据库 性能。 在水平分表的基础上,GaussDB(DWS)支持数据分区(Partition),即根据表的一列或者多列,将要插入表的记录分为不重叠的若干个范围,为每个范围创建一个分区,用来存储相应的数据。 在不同场景下,基于时间分片的方式分区后带来的收益。 当表中访问率较高的行位于一个单独分区或少数几个分区时:大幅减少搜索空间,从而提升访问性能。 当需要查询或更新一个分区的大部分记录时:仅需要连续扫描对应分区,而非扫描整个表,因此可大幅提升性能。 当需要大量加载或者删除的记录位于一个单独分区或少数几个分区时:可直接读取或删除对应分区,从而提升处理性能;同时由于避免大量零散的删除操作,可减少清理碎片工作量。 数据分区带来的好处如下: 改善可管理性 利用分区,可以将表和索引划分为一些更小、更易管理的单元。这样,数据库管理员在进行 数据管理 时就能采取“分而治之”的方法。 有了分区,维护操作可以专门针对表的特定部分执行。 可提升删除操作的性能 删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。 改善查询性能 通过限制要检查或操作的数据数量,分区可带来许多性能优势,包括: --分区剪枝: 分区剪枝(也称为分区消除)是CN在执行时过滤掉不需要扫描的分区,只对相关的分区进行扫描的技术。分区剪枝通常可以将查询性能提高若干数量级 --智能化分区联接: 通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的 数据集 。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集。