AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 20469
Accepted
yoel halb
yoel halb
Asked: 2012-07-06 13:47:14 +0800 CST2012-07-06 13:47:14 +0800 CST 2012-07-06 13:47:14 +0800 CST

A exibição indexada retarda a replicação

  • 772

Configurei a replicação transacional do SQL Server e, em seguida, adicionei exibições indexadas no assinante, mas as exibições indexadas parecem realmente desacelerar o assinante e quase o interrompem.

Tentei reinicializar a assinatura e até mesmo recriar a publicação, mas o problema permanece e, assim que adiciono uma exibição indexada, quase reduz a replicação.

A parte interessante é que já tenho muitas visualizações indexadas no assinante e funcionou bem, mas recentemente tentei adicionar mais visualizações indexadas e então tudo começou, e agora não consigo nem mesmo ter uma única visualização indexada.

Algum conselho?

sql-server replication
  • 1 1 respostas
  • 2330 Views

1 respostas

  • Voted
  1. Best Answer
    yoel halb
    2012-07-07T09:56:52+08:002012-07-07T09:56:52+08:00

    OK, encontrei a solução e estou escrevendo aqui não apenas para ajudar outras pessoas que encontram um problema semelhante, mas também é algo valioso para todos que trabalham com exibições indexadas.

    Primeiro, alguns pontos sobre exibições indexadas.

    Exibições indexadas

    1. Uma exibição de índice, embora também seja um "índice", também é uma "visão", portanto, pode se beneficiar quando o sistema estiver atualizando a exibição indexada de índices não agrupados na tabela base (e até mesmo cobrindo índices e estatísticas).

      (Para provar esse ponto, adicionei índices em tabelas base em um banco de dados que não foi usado além de obter dados de replicação, e ainda assim a exibição do sistema dm_db_index_usage_stats mostrou que o usuário procura, e o único uso foi a exibição indexada.)

      E parece que os melhores índices a serem adicionados para o benefício de uma exibição de índice seriam para buscar um único valor ou um pequeno intervalo de valores, já que é isso que a exibição indexada está basicamente fazendo ao ser usada localmente ou em um assinante para transacional replicação.

    2. Embora junções condicionais não sejam proibidas pelas restrições de exibição indexada, ainda assim é uma boa ideia evitá-las (assim como em consultas regulares).

      Considere a seguinte junção:

      FROM a
      JOIN b ON b.id = a.id
      JOIN c ON c.id = a.id
      JOIN final ON final.id = b.FinalID OR (b.finalID IS NULL AND final.id = c.FinalID)
      

      Isso pode causar gargalos de desempenho, em vez disso, é melhor dividi-lo em duas exibições indexadas extras e, em seguida, ter uma exibição que combine ambas usando "UNION ALL".

    3. Embora uma visualização indexada também seja uma "visualização", também é um "índice" que, em outras palavras, que insere/atualiza/exclui também tem que atualizar a visualização indexada, portanto, se a exibição tiver problemas de desempenho, a atualização levará mais tempo e, em no caso de replicação, se cada transação demorar muito, elas podem se acumular uma após a outra e, eventualmente, interromper a replicação

    Lembre-se também ao trabalhar com a replicação, que a reinicialização do assinante faz com que todos os índices e estatísticas que foram adicionados no cliente sejam descartados (se pre_creation_cmd tiver sido definido para descartar, que é o padrão) e apenas os índices que são parte da própria replicação será recriada e é preciso recriar manualmente todos os índices específicos do assinante.

    Portanto, na minha situação, primeiro adicionei novas exibições indexadas que acabaram precisando de índices não clusterizados melhores e também algumas que usavam junções condicionais, mas depois de reinicializar não me preocupei em recriar primeiro os índices não clusterizados das tabelas base e primeiro tentou criar as exibições indexadas que causaram gargalos para o processo de replicação.

    • 3

relate perguntas

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve