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/ Como alterar as colunas de distribuição?
Atualizado em 2024-05-09 GMT+08:00

Como alterar as colunas de distribuição?

Em um banco de dados de armazém de dados, você precisa escolher cuidadosamente colunas de distribuição para tabelas grandes, pois elas podem afetar o desempenho do banco de dados e da consulta. Se uma chave de distribuição imprópria for usada, a distorção de dados poderá ocorrer após a importação dos dados. Como resultado, o uso de alguns discos será muito maior do que o de outros discos, e o cluster pode até se tornar somente leitura. Se a política de distribuição de hash for usada e ocorrer distorção de dados, o desempenho de I/O de alguns DNs será ruim, afetando o desempenho geral da consulta. A seleção adequada e o ajuste das colunas de distribuição são essenciais para o desempenho da consulta de tabela.

Se a política de distribuição de hash for usada, você precisará verificar as tabelas para garantir que seus dados sejam distribuídos uniformemente em cada DN. Geralmente, mais de 5% de diferença entre a quantidade de dados em diferentes DNs é considerada como distorção de dados. Se a diferença for superior a 10%, terá de escolher outra coluna de distribuição.

Para tabelas que não são distribuídas uniformemente, ajuste suas colunas de distribuição para reduzir a distorção de dados e evitar problemas de desempenho do banco de dados.

Escolher uma coluna de distribuição apropriada

A coluna de distribuição em uma tabela de hash deve atender aos seguintes requisitos, que são classificados por prioridade em ordem decrescente:

  • Os valores da chave de distribuição devem ser discretos para que os dados possam ser distribuídos uniformemente em cada DN. Você pode selecionar a chave primária da tabela como a chave de distribuição. Por exemplo, para uma tabela de informações da pessoa, escolha a coluna número do cartão de identificação como a chave de distribuição.
  • Não selecione a coluna onde existe um filtro constante.
  • Selecione a condição de junção como a coluna de distribuição, para que as tarefas de junção possam ser enviadas para os DNs para serem executadas, reduzindo a quantidade de dados transferidos entre os DNs.
  • Várias colunas de distribuição podem ser selecionadas para distribuir uniformemente os dados.

Procedimento

Execute a instrução select version(); para consultar a versão atual do banco de dados. O desempenho necessário varia de acordo com a versão.

  • Para 8.0.x e versões anteriores, especifique a coluna de distribuição ao recriar uma tabela.
  1. Use Data Studio ou gsql no Linux para acessar o banco de dados.
  2. Crie uma tabela.

    Nas instruções a seguir, table1 é o nome da tabela original e table1_new é o nome da nova tabela. column1 e column2 são nomes de colunas de distribuição.

    1
    2
    3
    4
    CREATE TABLE IF NOT EXISTS table1_new 
    ( LIKE table1 INCLUDING ALL EXCLUDING DISTRIBUTION) 
    DISTRIBUTE BY 
    HASH (column1, column2);
    

  3. Migre dados para a nova tabela.

    1
    2
    3
    4
    START TRANSACTION;
    LOCK TABLE table1 IN ACCESS EXCLUSIVE MODE;
    INSERT INTO table1_new SELECT * FROM table1;
    COMMIT;
    

  4. Verifique se os dados da tabela foram migrados. Exclua a tabela original.

    1
    2
    SELECT COUNT(*) FROM table1_new;
    DROP TABLE table1;
    

  5. Substitua a tabela original.

    1
    ALTER TABLE table1_new RENAME TO table1;