Vacuum de tabelas - Amazon Redshift

Vacuum de tabelas

O Amazon Redshift pode classificar e executar automaticamente uma operação VACUUM DELETE nas tabelas em segundo plano. Para limpar tabelas após um carregamento ou uma série de atualizações incrementais, você também pode executar o comando VACUUM no banco de dados inteiro ou em tabelas individuais.

nota

Somente usuários com as permissões de tabela necessárias podem efetivamente limpar uma tabela. Se VACUUM for executado sem as permissões necessárias de tabela, a operação será concluída com êxito, mas sem efeito. Para obter uma lista das permissões de tabela válidas para executar efetivamente VACUUM, consulte VACUUM.

Por esse motivo, é recomendável limpar tabelas individuais conforme necessário. Também recomendamos essa abordagem porque limpar todo o banco de dados é uma operação potencialmente cara.

Classificação automática de tabela

O Amazon Redshift classifica os dados automaticamente em segundo plano para manter os dados da tabela na ordem de sua chave de classificação. O Amazon Redshift mantém o controle de suas consultas de verificação para determinar quais seções da tabela se beneficiarão com a classificação.

Dependendo da carga no sistema, o Amazon Redshift inicia automaticamente a classificação. A classificação automática reduz a necessidade de executar o comando VACUUM para manter os dados na ordem da chave de classificação. Se for necessário classificar os dados totalmente na ordem da chave de classificação, por exemplo, depois de um grande carregamento de dados, você ainda poderá executar o comando VACUUM manualmente. Para determinar se a tabela terá algum benefício com a execução de VACUUM SORT, monitore a coluna vacuum_sort_benefit em SVV_TABLE_INFO.

O Amazon Redshift rastreia consultas de varredura que usam a chave de classificação em cada tabela. O Amazon Redshift estima a porcentagem máxima de melhoria na verificação e filtragem de dados para cada tabela (se a tabela foi totalmente classificada). A estimativa é visível na coluna vacuum_sort_benefit em SVV_TABLE_INFO. Você pode usar essa coluna, junto com a coluna unsorted, para determinar quando as consultas podem se beneficiar da execução manual de VACUUM SORT em uma tabela. A coluna unsorted reflete a ordem de classificação física de uma tabela. A coluna vacuum_sort_benefit especifica o impacto da classificação de uma tabela executando manualmente VACUUM SORT.

Por exemplo, considere a seguinte consulta:

select "table", unsorted,vacuum_sort_benefit from svv_table_info order by 1;
table | unsorted | vacuum_sort_benefit -------+----------+--------------------- sales | 85.71 | 5.00 event | 45.24 | 67.00

Para a tabela “sales”, embora a tabela esteja ~86% não classificada fisicamente, o impacto da performance da consulta na tabela que está 86% não classificada é de apenas 5%. Isso pode ocorrer porque apenas uma parte pequena da tabela é acessada por consultas ou porque muito poucas consultas acessaram a tabela. No caso da tabela “event”, a tabela está ~45% não classificada fisicamente. Mas o impacto da performance da consulta de 67% indica que uma parte maior da tabela foi acessada por consultas ou o número de consultas que acessaram a tabela era grande. A tabela “event” pode se beneficiar potencialmente da execução de VACUUM SORT.

Exclusão de vacuum automática

Ao executar uma exclusão, as linhas são marcadas para exclusão, mas não removidas. O Amazon Redshift executa automaticamente uma operação VACUUM DELETE em segundo plano com base no número de linhas excluídas nas tabelas de banco de dados. O Amazon Redshift programa o VACUUM DELETE para execução durante períodos de carga reduzida e pausa a operação durante períodos de alta carga.

Frequência de VACUUM

Você deve limpar com a frequência necessária para manter a performance consistente de consulta. Considere esses fatores ao determinar com que frequência executar o comando VACUUM:

  • Execute VACUUM durante períodos em que você espera atividade mínima no cluster, tais como noites ou durante janelas designadas de administração do banco de dados.

  • Execute os comandos VACUUM fora das janelas de manutenção. Para obter mais informações, consulte Agendamento em torno de janelas de manutenção.

  • Uma grande região não classificada resulta em tempos mais longos de limpeza. Se você adiar a limpeza, ela levará mais tempo, pois mais dados precisam ser reorganizados.

  • VACUUM é uma operação uso intensivo de E/S, portanto quanto mais tempo sua limpeza levar para concluir, maior será o impacto sobre consultas simultâneas e outras operações de banco de dados em execução no seu cluster.

  • VACUUM leva mais tempo para tabelas que usam classificação intercalada. Para avaliar se tabelas intercaladas precisam ser reclassificadas, consulte a visualização SVV_INTERLEAVED_COLUMNS.

Estágio do classificação e estágio de mesclagem

O Amazon Redshift realiza uma operação de vácuo em dois estágios: primeiro, ele classifica as linhas na região não classificada e, se necessário, mescla as linhas recém-classificadas no final da tabela com as linhas existentes. Ao limpar uma tabela grande, a operação de limpeza continua em uma série de etapas que consistem em classificações incrementais seguidas de mesclagens. Se a operação falhar ou se o Amazon Redshift ficar off-line durante a limpeza, a tabela ou o banco de dados parcialmente limpo estará em um estado consistente, mas você precisará reiniciar manualmente a operação de limpeza. As classificações incrementais serão perdidas, mas as linhas mescladas que foram confirmadas antes da falha não precisam ser limpas novamente. Se a região não classificada é grande, o tempo perdido pode ser significativo. Para obter mais informações sobre as etapas de classificação e mesclagem, consulte Controle do volume de linhas mescladas.

Os usuários podem acessar tabelas enquanto elas estão sendo limpas. Você pode executar consultas e operações de gravação enquanto uma tabela está sendo limpa, mas quando DML e uma limpeza são executados simultaneamente, ambos podem levar mais tempo. Se você executar instruções UPDATE e DELETE durante uma limpeza, a performance do sistema pode ser reduzida. Mesclagens incrementais bloqueiam temporariamente operações UPDATE e DELETE simultâneas, e operações UPDATE e DELETE simultâneas, por usa vez, bloqueia as etapas de mesclagem incremental nas tabelas afetadas. As operações DDL, tal como ALTER TABLE, são bloqueadas até que a operação de limpeza termine com a tabela.

nota

Vários modificadores para VACUUM controlam a forma como ele funciona. Você pode usá-los para adaptar a operação de vácuo para a necessidade atual. Por exemplo, usando VACUUM RECLUSTER encurta a operação de vácuo não executando uma operação de mesclagem completa. Para ter mais informações, consulte VACUUM.

Limite de vacuum

Por padrão, VACUUM ignora a fase de classificação para qualquer tabela em que mais de 95 por cento das linhas da tabela já estejam classificadas. Ignorar a fase de classificação pode melhorar significativamente a performance de VACUUM. Para alterar o limite de classificação padrão para uma única tabela, inclua o nome da tabela e o parâmetro TO limite PERCENT ao executar o comando VACUUM.

Tipos de vacuum

Para obter informações sobre os diferentes tipos de vácuo, consulte VACUUM.