Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 多列分布_Postgresql - Fatal编程技术网

Postgresql 多列分布

Postgresql 多列分布,postgresql,Postgresql,在创建表时,在分发中使用多列是否有好处?例如: CREATE TABLE data_facts ( data_id int primary key, channel_id smallint, chart_id smallint, demo_id smallint, value numeric) DISTRIBUTED BY ( channel_id, chart_id, demo_id) 因为有可能我需要分别使用频道id,图表id

在创建表时,在分发中使用多列是否有好处?例如:

CREATE TABLE data_facts (
    data_id int primary key,
    channel_id smallint,
    chart_id smallint,
    demo_id smallint,
    value numeric)
DISTRIBUTED BY (
    channel_id,
    chart_id,
    demo_id)
因为有可能我需要分别使用
频道id
图表id
演示id
数据事实
与三个不同的表格
频道
图表id
连接起来

具体来说,

  • 我是否应该始终添加
    分发
    ,并包括我用于加入的效率方面的所有
    id
  • 如果是,这些id的顺序是否重要
  • 这在架构级别上是如何工作的?(可选)

  • 谢谢

    这取决于要对数据库进行多少分片,以及要在每个分区中分发多少记录,我的意思是,如果在分发中添加多个列,则会将更多的数据分片到更多分区中

    这还取决于你是按模还是散列进行切分


    但是,在我看来,如果您有一个多列主键,并且您想用这个主键进行切分,那么就有了按多列分布的感觉(所有列都在主键中)否则,您应该按单个列进行切分,这在大多数情况下就足够了。

    我认为值得注意的是,“在大多数情况下就足够了”表示您的数据集相对较小。具有相同分发密钥的所有数据必须放在集群中最小的磁盘上。因此,多个散列分发密钥是否会提高两个密钥的连接效率(减少重新分发)?还是将这两个键散列在一起,并基于该组合散列将数据分发一次?