Postgres XC中DISTRIBUTE BY REPLICATE和HASH有什么区别?

时间:2015-07-07 10:29:09

标签: postgresql hash cluster-computing replication distributed-system

根据Postgres-XC的SourceForge页面,在Postgres-XC中创建分布式表时,可以使用DISTRIBUTE BY属性:

  • 按复制分发:表格的每一行都将复制到Postgres-XC数据库群集的所有Datanode中。
  • 分配HASH:表格的每一行都将根据指定列的哈希值放置。允许以下类型作为分发列:INT8,INT2,OID,INT4,BOOL,INT2VECTOR,OIDVECTOR,CHAR,NAME,TEXT,BPCHAR,BYTEA,VARCHAR,FLOAT4,FLOAT8,NUMERIC,CASH,ABSTIME,RELTIME,DATE,TIME, TIMESTAMP,TIMESTAMPTZ,INTERVAL和TIMETZ。

这究竟意味着什么?

1 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题,正如documentation所述,@ a_horse_with_no_name指出, 按复制分发 会将所有记录分发到所有节点,并且< strong> 按哈希分发 将根据列进行哈希处理的列来隔离记录。例如:

CREATE TABLE EMPLOYEE (EMPID INT, NAME TEXT) DISTRIBUTE BY HASH (EMPID) TO datanode1, datanode2;

记录分布在两个节点之间。

此外,按复制分发用于 读取缩放 - &gt;使用协调器执行DML,并从各个节点获取记录。

由Hash分发用于 写入缩放 - &gt;使用节点执行DML,并从Coordinator中获取记录。有关详细信息,请参阅this