banco de dados MySQL Internet de programa sub-tabela de sub-biblioteca comumente usado

Primeiro, o gargalo de banco de dados

Se IO gargalo, ou um afunilamento de CPU, acabará por levar a um aumento no número de conexões ativas no banco de dados, o banco de dados pode então aproximar-se mesmo para levar o número limite de conexões ativas. O serviço é no ponto de vista do negócio, conexão pouca ou nenhuma conexão disponível banco de dados está disponível. Então você pode imaginar (concorrência, rendimento, colapso).

1, os estrangulamentos IO

A primeira: leitura de disco IO gargalo, dados muito quente, o cache do banco de dados não se encaixa, cada um vai gerar um monte de consulta IO, reduzir a velocidade de consulta ->  sub-bibliotecas e sub-mesa verticais .

A segunda: rede IO gargalo, dados muito solicitados, largura de banda não é suficiente ->  sub-bibliotecas .

2, gargalos de CPU

A primeira: problema SQL, conforme consta no SQL juntar-se, pelo grupo, a fim de, campos de consulta condições não-indexados, aumentando o funcionamento das operações da CPU -> otimização de SQL, estabelecer um cálculo de índice apropriado realizado no Serviço de camada de serviço de negócios.

A segunda: única tabela de dados é muito grande demais linha de consulta, digitalização, SQL é baixa eficiência, gargalos de CPU levar ->  tabela de partição horizontal .

Em segundo lugar, sub-biblioteca de sub-tabela de

1, o nível de sub-bibliotecas

  1. Conceito: No campo base, de acordo com um certo política (haxixe, gama, etc.), uma biblioteca dividida numa pluralidade de dados biblioteca em.
  2. resultados:
    • Cada biblioteca de estrutura são os mesmos;
    • Cada biblioteca de dados não são os mesmos, não há intersecção;
    • Tudo a biblioteca 's união é toda a quantidade de dados;
  3. Cena: O sistema de quantidade absoluta de até concorrente, sub-tabela é difícil de resolver fundamentalmente o problema, e não há nenhuma propriedade de negócios claro para os sub-bibliotecas verticais.
  4. Análise: biblioteca de mais, io e aliviar a pressão sobre cpu natural pode ser multiplicado.

2, o sub-quadro horizontal

  1. Conceito: No campo base, de acordo com um certo política (haxixe, gama, etc.), uma tabela dividida em uma pluralidade de dados de tabelas em.
  2. resultados:
    • Cada mesa de estrutura são o mesmo;
    • Cada tabela de dados é não é o mesmo, não há intersecção;
    • Todas as tabelas da união é a quantidade total de dados;
  3. Cena: a quantidade absoluta de sistema concorrente não vem para cima, mas muito quantidade de dados uma única tabela, afetando a eficiência SQL, o aumento da carga de CPU que se torna um gargalo.
  4. Tabelas de dados menos e eficiência de execução SQL única alta, reduzindo naturalmente a carga sobre o CPU: análise.

3, as sub-bibliotecas verticais

  1. O conceito: A tabela baseia-se, em conformidade com a carência de diferente, diferente tabela dividida em diferentes bibliotecas em.
  2. resultados:
    • Cada biblioteca 's estrutura é diferente;
    • Cada biblioteca de dados não são os mesmos, não há intersecção;
    • Tudo a biblioteca 's união é toda a quantidade de dados;
  3. Cena: simultaneidade o sistema absoluto e abstrato um módulo de serviço separada maio.
  4. Análise: Neste ponto, você pode basicamente do serviço. Por exemplo, com o desenvolvimento de mais e mais negócios algumas tabelas de configuração comuns, tabelas de dicionário, etc., então as tabelas pode ser dividido em uma biblioteca separada, ou até mesmo como um serviço. Além disso, com o desenvolvimento de um conjunto de modelo de negócio incubadora de empresas, então ele pode ser dividido em mesas separadas relacionadas com a biblioteca, ou mesmo como um serviço.

4, a sub-tabela verticais

  1. Conceito: No campo base de acordo com campos de atividade, as tabelas são divididos em diferentes campos da tabela (tabela primária e tabela de extensão).
  2. resultados:
    • Cada mesa de estruturas não são as mesmas;
    • Cada tabela de dados não são as mesmas, em geral, cada tabela campo tem, pelo menos, uma intersecção, em geral, é a chave para os dados primários associados;
    • Todas as tabelas da união é a quantidade total de dados;
  3. Cena: quantidade absoluta do sistema em simultâneo não é para cima, a folha de registo não é muito, mas a multi-campo, não-ponto de acesso e os dados de ponto de acesso e os dados em conjunto, um maior espaço de armazenamento exigida para uma única linha. De modo que a redução de dados linha de cache do banco de dados, irá ler os dados do disco para gerar uma grande quantidade de consultas aleatórias para ler IO, IO gargalo produtos.
  4. Análise: Você pode usar uma lista de páginas e páginas de detalhes para ajudar a entender. princípio resolução vertical é uma tabela de dados quente (dados redundantes podem frequentemente consultados em conjunto) em conjunto, como a tabela primária, os dados não-ponto de acesso em conjunto, como uma tabela de extensão. Estes dados adicionais podem ser armazenadas quente, reduzindo assim a leitura aleatória IO. Após a demolição, a fim de obter todos os dados que você precisa para associar as duas tabelas para buscar dados. Mas lembre-se, não use se juntar, porque a juntar-se não só irá aumentar a carga sobre CPU e fala duas mesas acopladas (deve ser em uma instância de banco de dados). Ligada camada de serviço de dados deve ser um problema no negócio, respectivamente adquirir os dados da tabela primárias e estendidas e obter todos os dados associados com o campo associado.

Em terceiro lugar, a ferramenta sub-tabela de sub-biblioteca

  1. sharding-esfera: frasco, anteriormente conhecida como fragmentação-JDBC;
  2. TDDL: Frasco, Taobao Distribuir camada de dados;

  3. Mycat: middleware.

Nota: Os prós e contras de ferramentas, a sua própria investigação, o site e comunitárias oficiais prioridades.

Em quarto lugar, o sub-mesa etapa sub-biblioteca

A capacidade (capacidade atual e a quantidade de aumento) da tabela de banco de dados ponto a avaliação ou o número de pontos -> selecionado a partir do grupo-chave (mesmo) -> tabela de sub-regras (intervalo de hash ou semelhantes) -> realizada (tipicamente double write) -> problemas de expansão (minimizar mover dados).

Cinco questões sub-tabela sub-biblioteca

1, as consultas questão-chave não-partição

Com base no nível de sub-biblioteca de sub-quadro, a estratégia de dividir comumente utilizado método de hash.

  1. End além de chave de partição chave de partição como só uma consulta não-critérios
    • Método de mapeamento
    • genes

      NOTA: escrita, gerando abordagem do gene id_usuario, como mostrado na FIG. Sobre gene XBIT, por exemplo, a sub-tabelas 8, 23 = 8, e, por conseguinte, tomar x 3, i.e. 3bit gene. A consulta pode ser user_id directamente quando é encaminhado para o módulo de sub-biblioteca ou sub-tabela correspondente. O nome_usuario Quando a consulta, gerando função gera user_name_code por user_name_code em seguida encaminhado para o correspondente módulo de sub-biblioteca ou sub-tabela. id Gerar comum algoritmo do floco de neve .

  2. O fim da adição de mais do que uma chave chave de partição partição como uma condição de não-consulta
    • Método de mapeamento
    • 冗余 método

      Nota: quando a consulta de acordo com order_id ou buyer_id encaminhado para db_o_buyer biblioteca, a biblioteca quando encaminhado para db_o_seller consulta seller_id acordo. Sinto-me um carro pouco antes do cavalo! Há outra boa maneira? Mudança de tecnologia empilhá-la?

  3. Antecedentes Além disso, há uma variedade de chave de partição chave não-partição pergunta combinação condição
    • lei NoSQL
    • 冗余 método

2, não-cruzada tabela de chave partição entre bases de dados problema consulta paginação

Com base no nível de sub-biblioteca de sub-quadro, a estratégia de dividir comumente utilizado método de hash.

Nota: Usando método noSQL para resolver (ES, etc).

3, problema expandindo

Com base no nível de sub-biblioteca de sub-quadro, a estratégia de dividir comumente utilizado método de hash.

  1. expansão horizontal da biblioteca (upgrade a partir de Kufa)

    Nota: A expansão é dobrada.

  2. mesa de expansão horizontal (o dobro da lei de imigração)

    o primeiro passo :( síncrona dual-write) modificar a configuração do aplicativo e do código, além da dupla de gravação, deploy;
    segundo passo :( síncrona dual-write) para copiar os dados antigos antiga biblioteca para o novo biblioteca;
    passo :( síncrono de gravação dupla) sujeita a revisão de novo repositório de dados antiga biblioteca de idade;
    quarto passo :( síncrono de gravação dupla) para modificar a configuração do código de aplicação e, gravação dupla removido, a implantação;

Nota: duplo escrever um programa genérico.

Seis sub-biblioteca resumo sub-mesa

  1. -Sub biblioteca de sub-mesa, antes de tudo tem que saber onde o gargalo antes que você possa razoavelmente dividir (ou sub-biblioteca de sub-mesa? Horizontal ou vertical? Em vários?). Para sub-biblioteca e não pode ser resolvido sub-mesa.
  2. chave selecionada é muito importante, é necessário ter em conta a divisão por igual, tendo também em conta as consultas chave não-partição.
  3. Enquanto atender a demanda, regras dividindo o mais simples possível.

Sete pontos mostra um exemplo de sub-bibliotecas

Exemplo GitHub Endereço: https://github.com/littlecharacter4s/study-sharding

Publicado 109 artigos originais · Louvor obteve 101 · vista 360 000 +

Acho que você gosta

Origin blog.csdn.net/Alen_xiaoxin/article/details/105103642
Recomendado
Clasificación