Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 16305|Resposta: 0

[Fonte] A latência mestre-escravo do banco de dados leva a uma resolução imprecisa de consultas

[Copiar link]
Postado em 2020-4-2 20:41:03 | | | |
【Prefácio】

Quando os dados atingem uma certa quantidade, o banco de dados se torna o gargalo de todo o sistema, e a estratégia de otimização geralmente é adotada como separação entre leitura e escrita, e o banco realiza a separação entre leitura e escrita dividindo o banco de dados principal do banco de dados (operação de solicitação de escrita a partir do banco de dados principal, operação de solicitação de leitura a partir do banco de dados);

【Ideias para resolver atrasos de dados】

1. O princípio da sincronização mestre-escravo (aqui tomamos o MySQL mais popular como exemplo)

Aqui está um diagrama esquemático de uma sincronização clássica de dados mestre-escravo do MySQL via binlog:



2. Como surgem os problemas?

1. A partir do esquema acima, não é difícil descobrir que a sincronização mestre-escravo tem um certo atraso, que afeta o tamanho do atraso:

(1) O tamanho do atraso depende da quantidade de dados gerados da última sincronização até o presente

(2) A situação atual da rede entre servidores

(3) A pressão do próprio servidor mestre-escravo (CPU, memória, IO, etc.)

2. Como o serviço de banco de dados geralmente está na intranet, e o servidor estará mais alto na configuração (mais do que a necessidade real) ao ser adquirido, a sincronização é basicamente muito rápida, geralmente em milissegundos;

3. Em cenários gerais de negócios, a latência de milissegundos pode ser ignorada;



4. Existem casos gerais e especiais, e algumas situações especiais exigem diferença de tempo em tempo real de milissegundos. Aqui estão soluções comuns para essas situações especiais.

3. Soluções de latência de dados:

1. Esquema 1: Escrever o programa em dobro (escrever o banco de dados principal e ler o banco de dados ao mesmo tempo)



2. Esquema 2: Leia o programa para verificar o banco de dados principal



3. Esquema 3: Escrever o banco de dados principal e escrever o cache (definir um certo tempo de expiração, geralmente um pouco maior que o atraso máximo de sincronização do banco de dados), ler o programa, ler o cache e ler o banco de dados escravo



4. Vantagens e desvantagens dos três esquemas:

1. Esquema 1: A escrita dupla consumirá uma certa quantidade de desempenho, o que é relativamente simples de implementar e não é adequado para cenários de escrita concorrente de alta intensidade;

2. Esquema 2: O programa de leitura afetará o desempenho da biblioteca principal, que é relativamente simples de implementar e não é adequado para cenários de leitura concorrente elevada.

3. Esquema 3: Na maioria dos casos, leitura e escrita consomem mais desempenho de escrita, o que é mais complexo de implementar e adequado tanto para leituras concorrentes quanto para gravações concorrentes elevadas (leituras e gravações em cache são muito rápidas);

【Resumo】

1. A implementação é importante, mas mais importante é a ideia;

2. Muitos princípios e ideias subjacentes são universais
Original:https://blog.csdn.net/zhanghan18 ... le/details/91638443




Anterior:.net/c# ado.net executa procedimentos armazenados com valores de retorno
Próximo:MSSQL COM LEITURA SUJA (SEM BLOQUEIO)
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com