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.
Actualización más reciente 2026-09-29 GMT+08:00

Paso 4: Creación de otra tabla y carga de datos

Después de seleccionar un modo de almacenamiento, un nivel de compresión, un modo de distribución y una clave de distribución para cada tabla, utilice estos atributos para crear tablas y volver a cargar datos. Compare el rendimiento del sistema antes y después de la recreación de la tabla.

  1. Elimine las tablas creadas anteriormente.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    DROP TABLE store_sales;
    DROP TABLE date_dim;
    DROP TABLE store;
    DROP TABLE item;
    DROP TABLE time_dim;
    DROP TABLE promotion;
    DROP TABLE customer_demographics;
    DROP TABLE customer_address;
    DROP TABLE household_demographics;
    DROP TABLE customer;
    DROP TABLE income_band;
    
    DROP FOREIGN TABLE obs_from_store_sales_001;
    DROP FOREIGN TABLE obs_from_date_dim_001;
    DROP FOREIGN TABLE obs_from_store_001;
    DROP FOREIGN TABLE obs_from_item_001;
    DROP FOREIGN TABLE obs_from_time_dim_001;
    DROP FOREIGN TABLE obs_from_promotion_001;
    DROP FOREIGN TABLE obs_from_customer_demographics_001;
    DROP FOREIGN TABLE obs_from_customer_address_001;
    DROP FOREIGN TABLE obs_from_household_demographics_001;
    DROP FOREIGN TABLE obs_from_customer_001;
    DROP FOREIGN TABLE obs_from_income_band_001;
    

  2. Cree tablas y especifique modos de almacenamiento y distribución para ellas.

    Solo se proporciona la sintaxis para recrear la tabla store_sales por simplicidad. Para recrear todas las demás tablas, copie la sintaxis en Creación de otra tabla después de la optimización del diseño.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE TABLE store_sales
    (
        ss_sold_date_sk           integer                       ,
        ss_sold_time_sk           integer                       ,
        ss_item_sk                integer               not null,
        ss_customer_sk            integer                       ,
        ss_cdemo_sk               integer                       ,
        ss_hdemo_sk               integer                       ,
        ss_addr_sk                integer                       ,
        ss_store_sk               integer                       ,
        ss_promo_sk               integer                       ,
        ss_ticket_number          bigint               not null,
        ss_quantity               integer                       ,
        ss_wholesale_cost         decimal(7,2)                  ,
        ss_list_price             decimal(7,2)                  ,
        ss_sales_price            decimal(7,2)                  ,
        ss_ext_discount_amt       decimal(7,2)                  ,
        ss_ext_sales_price        decimal(7,2)                  ,
        ss_ext_wholesale_cost     decimal(7,2)                  ,
        ss_ext_list_price         decimal(7,2)                  ,
        ss_ext_tax                decimal(7,2)                  ,
        ss_coupon_amt             decimal(7,2)                  ,
        ss_net_paid               decimal(7,2)                  ,
        ss_net_paid_inc_tax       decimal(7,2)                  ,
        ss_net_profit             decimal(7,2)                  
    ) 
    WITH (ORIENTATION = column,COMPRESSION=middle)
    DISTRIBUTE BY hash (ss_item_sk);
    

  3. Cargue datos de muestra en estas tablas.
  4. Registre el tiempo de carga en las tablas de referencia.

    Referencia

    Antes

    Después

    Tiempo de carga (11 tablas)

    341584 ms

    257241 ms

    Espacio de almacenamiento ocupado

    Store_Sales

    42 GB

    -

    Date_Dim

    11 MB

    -

    Store

    232 KB

    -

    Item

    110 MB

    -

    Time_Dim

    11 MB

    -

    Promotion

    256 KB

    -

    Customer_Demographics

    171 MB

    -

    Customer_Address

    170 MB

    -

    Household_Demographics

    504 KB

    -

    Customer

    441 MB

    -

    Income_Band

    88 KB

    -

    Espacio de almacenamiento total

    42 GB

    -

    Query execution time

    Consulta 1

    14552.05 ms

    -

    Consulta 2

    27952.36 ms

    -

    Consulta 3

    17721.15 ms

    -

    Tiempo total de ejecución

    60225.56 ms

    -

  5. Ejecute el comando ANALYZE para actualizar las estadísticas.

    1
    ANALYZE;
    

    Si se devuelve ANALYZE, la ejecución se realiza correctamente.

    1
    ANALYZE
    

  6. Compruebe si hay sesgo de datos.

    En una tabla hash, una clave de distribución incorrecta puede causar sesgo de datos o un rendimiento de E/S deficiente en determinados DN. Por lo tanto, debe comprobar la tabla para asegurarse de que los datos estén distribuidos uniformemente en cada DN. Puede ejecutar las siguientes sentencias SQL para comprobar si hay sesgo de datos:

    1
    SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM table_name GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc;
    

    xc_node_id corresponde a un DN. Por lo general, una diferencia superior al 5% entre la cantidad de datos en los diferentes DN se considera un sesgo de datos. Si la diferencia es mayor al 10%, elija otra clave de distribución. En DWS, puede seleccionar varias claves de distribución para distribuir los datos de forma uniforme.