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 / 50183
Accepted
reticentKoala
reticentKoala
Asked: 2013-09-20 01:59:06 +0800 CST2013-09-20 01:59:06 +0800 CST 2013-09-20 01:59:06 +0800 CST

Tamanho excessivo do instantâneo de replicação causando falha

  • 772

Estou procurando uma explicação para um instantâneo de replicação ser superior a 5 vezes o que estamos prevendo

Após uma falha de replicação, estamos tentando reinicializar as assinaturas com um novo instantâneo. O tamanho do banco de dados é de 135 GB, uma tabela dentro do banco de dados é de 60 GB - excluímos este artigo da publicação. Isso significava que tínhamos uma expectativa de que o tamanho do snapshot fosse de aproximadamente 75 GB.

Fizemos várias tentativas de criar o instantâneo e elas falharam devido à falta de espaço em disco. Ontem à noite, o instantâneo preencheu um disco com 340 GB de espaço livre.

Gostaria de receber qualquer explicação para esse enorme tamanho de instantâneo.

Em meu exame das possíveis causas, observo que o formato do instantâneo está definido como "Caractere - Obrigatório se um editor ou assinante não estiver executando o SQL Server". Isso apesar do fato de que em ambas as extremidades dessa replicação transnacional está o SQL Server nativo. Existe um tamanho diferente entre os formatos?

Desde já, obrigado.

Native mode file Size:105 MB
C:>bcp IVM_ArchiveTest.dbo.Event out D:\NOBACKUP\UseOnce\EventNative.dat -T -n 
218977 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) 
Total : 7878 Average : (27796.01 rows per sec.) 

Character mode file Size:66 MB 
C:\>bcp IVM_ArchiveTest.dbo.Event out D:\NOBACKUP\UseOnce\EventChar.dat -T -c 
218977 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) 
Total : 1654 Average : (132392.38 rows per sec.) 
sql-server replication
  • 2 2 respostas
  • 4041 Views

2 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2013-09-20T02:21:02+08:002013-09-20T02:21:02+08:00

    Observe que a representação de caracteres de qualquer dado quase sempre excederá o tamanho original. Dependendo do tipo, pode exceder em uma grande margem. Por exemplo. uma coluna int ocupa 4 bytes, mas a representação de caracteres 1000000leva ~ 16 bytes como Unicode, incluindo delimitadores. Isso é um aumento de x4 ali. Datas, flutuações, números, todos geralmente aumentarão e por fatores ainda maiores que x4.

    A alternativa de formato nativo é o formato nativo do utilitário bcp (já que os instantâneos são aplicados usando bcp). Esse formato é apenas um pouco mais longo que o armazenamento SQL nativo ao comparar valores individuais, mas pode resultar em arquivos realmente menores do que o armazenamento exigido pelo SQL Server porque o arquivo bcp é denso: não há cabeçalho de página, nem páginas parcialmente preenchidas (fragmentação, fator de preenchimento). Consulte Usar formato nativo para importar ou exportar dados .

    Além disso, você também deve compactar os instantâneos. Consulte Melhorar o desempenho geral da replicação :

    • Use um instantâneo de modo nativo, a menos que seja necessário um instantâneo de modo de personagem. Use o instantâneo de modo nativo padrão para todos os Assinantes, exceto Assinantes não SQL Server e Assinantes executando SQL Server Compact, que exigem um instantâneo de modo de caractere.
    • Use uma única pasta de instantâneo para uma publicação. Ao especificar as propriedades de publicação relacionadas ao local do instantâneo, você pode optar por gerar arquivos de instantâneo para a pasta de instantâneo padrão, para uma pasta de instantâneo alternativa ou para ambos. Gerar arquivos de instantâneo em ambos os locais requer espaço em disco adicional e mais processamento quando o Snapshot Agent é executado.
    • Coloque a pasta de instantâneo em uma unidade local do Distribuidor que não seja usada para armazenar banco de dados ou arquivos de log . O Snapshot Agent executa uma gravação sequencial de dados na pasta de instantâneos. Colocar a pasta de instantâneo em uma unidade separada de qualquer banco de dados ou arquivos de log reduz a contenção entre os discos e ajuda o processo de instantâneo a ser concluído mais rapidamente.
    • Ao criar o banco de dados de assinatura no Assinante, considere especificar um modelo de recuperação simples ou bulk-logged . Isso permite um registro mínimo das inserções em massa executadas durante a aplicação do instantâneo no Assinante. Após a aplicação do instantâneo ao banco de dados de assinatura, você pode mudar para um modelo de recuperação diferente, se necessário (bancos de dados replicados podem usar qualquer um dos modelos de recuperação). Para obter mais informações sobre como selecionar um modelo de recuperação, consulte Visão geral de restauração e recuperação (SQL Server).
    • Considere usar a pasta de instantâneos alternativos e os instantâneos compactadosem mídia removível para redes de baixa largura de banda. A compactação de arquivos de instantâneo na pasta de instantâneo alternativo pode reduzir os requisitos de armazenamento em disco de instantâneo e facilitar a transferência de arquivos de instantâneo em mídia removível. Instantâneos compactados podem, em alguns casos, melhorar o desempenho da transferência de arquivos de instantâneo pela rede. No entanto, compactar o instantâneo requer processamento adicional pelo Snapshot Agent ao gerar os arquivos de instantâneo e pelo Distribution Agent ou Merge Agent ao aplicar os arquivos de instantâneo. Isso pode diminuir a geração de instantâneos e aumentar o tempo necessário para aplicar um instantâneo em alguns casos. Além disso, os instantâneos compactados não podem ser retomados se ocorrer uma falha de rede; portanto, eles não são adequados para redes não confiáveis. Considere essas compensações com cuidado ao usar instantâneos compactados em uma rede. Para mais informações, vejaLocais alternativos de pastas de instantâneos e instantâneos compactados .
    • 7
  2. Kin Shah
    2013-09-20T13:42:56+08:002013-09-20T13:42:56+08:00

    @RemusRusanu explicou melhor o modo nativo e de caractere para bcp. +1 para isso de mim.

    Para lidar com a sua situação, você pode usar qualquer uma das 2 abordagens diferentes.

    A primeira é inicializar a assinatura a partir de um backup. Consulte Como: Inicializar um Assinante Transacional a partir de um Backup (Programação Transact-SQL de Replicação) . Isso é autoexplicativo e o BOL tem uma boa redação sobre isso.

    Kendal Van Dyke escreveu no blog sobre a segunda abordagem em Reduzir o tempo de sincronização da replicação transacional aplicando instantâneos manualmente , o que é excelente e economiza tempo e vida. É um processo um pouco manual, mas já lidei com isso e é uma abordagem ganha-ganha.

    • 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 fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 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

    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
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • 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

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