Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ GaussDB(DWS)/ Perguntas frequentes/ Uso do banco de dados/ Se nenhuma coluna de distribuição for especificada, como os dados serão armazenados?
Atualizado em 2024-05-09 GMT+08:00

Se nenhuma coluna de distribuição for especificada, como os dados serão armazenados?

Para clusters 8.1.2 ou posterior, você pode usar o parâmetro GUC default_distribution_mode para consultar e definir o modo de distribuição de tabela padrão.

Se nenhuma coluna de distribuição for especificada durante a criação da tabela, os dados serão armazenados da seguinte forma:

  • Cenário 1

    Se a chave primária ou restrição exclusiva for incluída durante a criação da tabela, a distribuição de hash será selecionada. A coluna de distribuição é a coluna correspondente à chave primária ou restrição exclusiva.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    CREATE TABLE warehouse1
    (
        W_WAREHOUSE_SK            INTEGER            PRIMARY KEY,
        W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
        W_WAREHOUSE_NAME          VARCHAR(20)                   
    );
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "warehouse1_pkey" for table "warehouse1"
    CREATE TABLE
    
    SELECT getdistributekey('warehouse1');
     getdistributekey
    ------------------
     w_warehouse_sk
    (1 row)
    
  • Cenário 2

    Se a chave primária ou restrição exclusiva não for incluída durante a criação da tabela, mas houver colunas cujos tipos de dados podem ser usados como colunas de distribuição, a distribuição de hash será selecionada. A coluna de distribuição é a primeira coluna cujo tipo de dados pode ser usado como uma coluna de distribuição.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    CREATE TABLE warehouse2
    (
        W_WAREHOUSE_SK            INTEGER                       ,
        W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
        W_WAREHOUSE_NAME          VARCHAR(20)                   
    );
    NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'w_warehouse_sk' as the distribution column by default.
    HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
    CREATE TABLE
    
    SELECT getdistributekey('warehouse2');
     getdistributekey
    ------------------
     w_warehouse_sk
    (1 row)
    
  • Cenário 3

    Se a chave primária ou restrição exclusiva não for incluída durante a criação da tabela e não existir nenhuma coluna cujo tipo de dados possa ser usado como uma coluna de distribuição, a distribuição round-robin será selecionada.

    CREATE TABLE warehouse3
    (
        W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
        W_WAREHOUSE_NAME          VARCHAR(20)                   
    );
    NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'w_warehouse_id' as the distribution column by default.
    HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
    CREATE TABLE
    
    SELECT getdistributekey('warehouse3');
     getdistributekey
    ------------------
     w_warehouse_id
    (1 row)