Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(DWS)/ Preguntas frecuentes/ Uso de la base de datos/ Si no se especifica ninguna columna de distribución, ¿cómo se almacenarán los datos?
Actualización más reciente 2023-10-12 GMT+08:00

Si no se especifica ninguna columna de distribución, ¿cómo se almacenarán los datos?

Para clústeres de 8.1.2 o posterior, puede utilizar el parámetro de GUC default_distribution_mode para consultar y establecer el modo de distribución de tabla predeterminado.

Si no se especifica ninguna columna de distribución durante la creación de la tabla, los datos se almacenan de la siguiente manera:

  • Escenario 1

    Si se incluye la clave principal o la restricción única durante la creación de la tabla, se selecciona la distribución hash. La columna de distribución es la columna correspondiente a la clave principal o restricción única.

     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)
    
  • Escenario 2

    Si la clave principal o la restricción única no se incluyen durante la creación de la tabla pero hay columnas cuyos tipos de datos se pueden utilizar como columnas de distribución, se selecciona la distribución hash. La columna de distribución es la primera columna cuyo tipo de datos se puede utilizar como columna de distribución.

     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)
    
  • Escenario 3

    Si la clave principal o la restricción única no se incluyen durante la creación de la tabla y no existe ninguna columna cuyo tipo de datos se pueda utilizar como columna de distribución, se selecciona la distribución round-robin.

    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)