gpt4 book ai didi

sql - sql中的表分布和表分区有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 01:59:08 24 4
gpt4 key购买 nike

我仍在努力确定 azure sql 数据仓库中表分布的概念与 Sql server 中表分区的概念有何不同?

两者的定义似乎都取得了相同的结果。

最佳答案

Azure DW 有多达 60 个计算节点作为其一部分 MPP architecture .当你在 Azure DW 上存储一个表时,你就是在这些节点之间存储它。您的表数据分布在这些节点上(根据您的需要使用哈希分布或循环分布)。您还可以选择在这些节点之间复制您的表(最好是非常小的表)。

enter image description here

也就是分布。每个节点都有自己独特的记录,只有该节点在与数据交互时才关心这些记录。这是一种无共享架构。

enter image description here


Partitioning完全脱离了这种分布的概念。当我们对表进行分区时,我们会根据某种方案决定哪些行属于哪些分区(例如,通过 order.create_dateorder 表进行分区)。然后,每个 create_date 的一组记录被存储在它自己的表中,与任何其他 create_date 记录集分开(在幕后不可见)。

分区很好,因为您可能会发现您只想从表中选择 10 天的订单,因此您只需要读取 10 个较小的表,而不必跨年扫描的 order 数据以找到您之后的 10 天。

这是 Microsoft 网站上的一个示例,其中水平分区是在 name 列上完成的,具有两个基于 names 字母顺序的“分片”:

enter image description here


表分布是一个仅适用于 Azure DW 或 Teradata 等 MPP 类型 RDBMS 的概念。最容易将其视为(在一定程度上)与数据有些分离的硬件概念。 Azure 在这里为你提供了很多控制,而其他 MPP 数据库基于主键进行分发。分区在几乎每个 RDBMS(无论是否为 MPP)上都可用,最容易将其视为由表中的数据定义并依赖于表中数据的存储/软件概念。

最后,他们同时解决同一个问题。但是……几乎每个 RDBMS 概念(索引、磁盘存储、优化、分区、分布等)都是为了解决同样的问题。即:“我如何尽快获得我需要的准确数据?”当您将这些概念组合在一起以满足您的数据检索需求时,您可以让您的 SQL 请求变得非常快,即使是面对海量的数据也是如此。

关于sql - sql中的表分布和表分区有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com