你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于: Azure Database for PostgreSQL 灵活服务器
群集中有五种表类型,每种表都以不同方式存储在节点中,并且用于不同的目的。
分布式表
第一种类型是分布式表,也是最常见的类型。 对于 SQL 语句而言,它们看似是普通的表,但它们在各个工作器节点之间进行水平分区。 也就是说,表的行存储在不同节点上的片段表(称为分片)中。
弹性群集在整个群集中不仅运行 SQL 语句,还运行 DDL(数据定义语言)语句。 更改分布式表的架构会执行级联,进而更新各个工作器中的所有表分片。 此类操作需要通过端口 5432 上的连接来完成。
分布式列
弹性群集使用分片算法将行分配到分片。 基于表列(称为分布列)的值执行分配,此分配具有确定性。 群集管理员在分布表时必须指定此列。 做出正确的选择,这一点对于性能和功能有重要影响。
引用表
引用表是一种分布式表,其所有内容都集中到了单个分片中。 此分片复制到了每一个工作器中。 针对任何工作器的查询都可以在本地访问引用信息,无需从另一个节点请求行,因此也不会产生此类网络开销。 引用表没有分布列,因为无需区分每行的各个分片。
引用表通常很小,并用于存储与任何工作器节点上运行的查询相关的数据。 例如,订单状态或产品类别等枚举值。
本地表
使用弹性群集时,每个节点都是常规 PostgreSQL 数据库。 可对其创建普通表,并选择不对其进行分片。
本地表最好是不参与连接查询的小型管理表。 例如,用于执行应用程序登录和身份验证的 users
表。 仅在你不打算使用端口 7432 在弹性群集中对连接进行负载均衡时,这种类型的表才有用。
本地托管表
如果本地表和引用表之间存在外键引用,弹性群集可能会自动将本地表添加到元数据。 此外,可通过对常规本地表执行 citus_add_local_table_to_metadata 函数来手动创建本地托管表。 元数据中存在的表被视为托管表,可从任何节点进行查询。 Citus 知道要路由到节点,以从本地托管表获取数据。 此类表在 citus_tables
视图中显示为本地表。
架构表
通过基于架构的分片,分布式架构会自动与单个共置组相关联。 在这些架构中创建的表会自动转换为没有分片键的共置分布式表。 此类表被视为架构表,在 citus_tables
视图中显示为架构。