Implementando tabelas de réplica

Objective

After completing this lesson, you will be able to melhore o desempenho com réplicas.

Tabelas de réplica

Aprendemos como você pode escolher entre virtualização e replicação para seus dados. Mas e se você decidir começar com a virtualização, mas depois você pode querer mudar para a replicação por causa do baixo desempenho?

A princípio, a criação de um relatório sobre uma tabela virtual pode parecer uma boa opção porque essa abordagem suporta uma implementação rápida e manutenção fácil.

O slide mostra um relatório em execução em uma tabela virtual.

No entanto, em algumas situações, a replicação dos dados remotos para o sistema SAP HANA local pode oferecer melhor desempenho de consulta do que o acesso aos dados em uma tabela remota. Assim, você pode considerar abandonar a abordagem de virtualização e reimplementar uma abordagem de replicação.

Mas o problema de alternar a abordagem de provisionamento de dados é que você precisaria ajustar todos os aplicativos para apontar para a nova tabela de destino onde os dados replicados são carregados. Isso geraria tarefas de transporte e de teste com as quais você poderá não querer ser sobrecarregado.

A solução para este cenário é implementar tabelas de réplica. Esta é uma funcionalidade da replicação de dados.

O slide mostra um relatório em execução em uma tabela replicada.

Uma tabela de réplica fica ao lado de uma tabela virtual e tem a mesma estrutura. A tabela de réplica captura e armazena os dados em tempo real.

Este slide compara um relatório em execução em relação à tabela virtual vs. uma tabela replicada.

O principal recurso da implementação de uma tabela de réplica é um comutador que permite alternar facilmente entre a tabela virtual e a tabela de réplica. Isso significa que você pode comutar para a tabela de réplica se a performance começar a degradar e voltar a comutar de volta quando a performance melhorar.

Quando comutar?

Você pode identificar facilmente consultas remotas problemáticas e casos em que pode ser benéfico comutar utilizando duas visões de monitoramento:

  • M_EXPENSIVE_STATEMENTS
  • M_REMOTE_STATEMENTS

Quando o tempo de execução de uma instrução SQL executada em uma tabela virtual excede um determinado limite, ela é incluída na visão de monitoramento M_EXPENSIVE_STATEMENTS.

Os campos comuns na visão de monitorização M_EXPENSIVE_STATEMENTS e na visão de monitorização M_REMOTE_STATEMENTS podem ser utilizados para encontrar as consultas remotas de instruções SQL lentas e, assim, as tabelas virtuais que se beneficiariam de um comutador para uma réplica.

Definição de tabela de réplica

Para alternar entre dados replicados e a tabela virtual, a tabela virtual deve ter uma tabela de réplica correspondente adicionada a ela.

Aqui estão algumas características das tabelas de réplica:

  • Cada tabela virtual só pode ter uma tabela de réplica.
  • Uma tabela de réplica é atualizada em tempo real quando a tabela original é atualizada.

    A replicação em tempo real só é suportada para fontes remotas que suportam captura de dados alterados em tempo real (CDC).

    Caso contrário, você pode carregar dados para a tabela de tempos em tempos. Sua réplica seria então uma réplica de instantâneo.

  • As tabelas de réplica são geradas automaticamente e armazenadas em um esquema interno, gerenciado por um usuário interno. Eles estão escondidos nos bastidores.

Nota

Há um recurso chamado Tabelas de réplica de propriedade do usuário que permitiria alterações na estrutura da tabela de réplica (por exemplo, para adicionar particionamento para melhorar o desempenho da consulta da tabela replicada).

Esse tipo de tabela de réplica é criado em um esquema do usuário, para que possa ser modificado.

Comutar para réplica e comutar de volta para tabela virtual

  • Para adicionar uma réplica a uma tabela virtual, execute a seguinte instrução:
    Code Snippet
    12
    ALTER VIRTUAL TABLE <virtual_table_name> ADD SHARED [SNAPSHOT] REPLICA;
  • Para acessar de novo a tabela virtual diretamente, você deve:
    • Para uma consulta específica, use um HINT para substituir o modo de leitura para que você use a tabela virtual e não a réplica.

      Code Snippet
      12
      SELECT * FROM <virtual_table_name> WITH HINT(NO_VIRTUAL_TABLE_REPLICA);

      ou use uma instrução SET antes de executar a consulta.

      Code Snippet
      12
      SET 'VIRTUAL_TABLE_REPLICA' = 'FALSE'; SELECT * FROM <virtual_table_name>;

    • Desative temporariamente a réplica usando uma instrução ALTER.

      Code Snippet
      1
      ALTER VIRTUAL TABLE <virtual_table_name> DISABLE REPLICA;

      Em seguida, ele pode ser ativado novamente mais tarde. (Substitua DISABLE por ENABLE).

    • Exclua a réplica usando um comando DROP.

      Code Snippet
      12
      ALTER VIRTUAL TABLE <virtual_table_name> DROP REPLICA;

Você chegou ao fim desta unidade e aprendeu sobre as diferentes abordagens de replicação de dados.