Será que o innodb se beneficia do memcached?

1

de - link

(corrija-me se não faz sentido)

benefícios potenciais

  1. salvando o cálculo complexo de consultas no ambiente distribuído

  2. evita consultas repetidas e provavelmente beneficia a maioria ao ter vários servidores (mais de 5 servidores de banco de dados) - consulta uma vez, armazena em memcached e reutiliza para sempre

innodb tem tamanho de buffer interno,
faz sentido ter memcached para atuar como distribuidor?

no entanto, acho que o acesso à RAM local é muito mais rápido que no ambiente distribuído

algum pensamento?

    
por ajreal 18.04.2011 / 06:37

1 resposta

2

IMHO os dois mecanismos devem ser equilibrados corretamente e nunca tratados como mutuamente exclusivos. O motivo ???

memcached é um esquema de memória bem gerenciado para armazenar dados usando tags definidas pelo usuário. Isso elimina a necessidade de E / S de disco pesado.

O InnoDB é um mecanismo de armazenamento compatível com ACID que usa MVCC (controle de simultaneidade multiversão) para permitir leituras e gravações transacionais pesadas. Com memória suficiente, você pode armazenar seu conjunto de dados em funcionamento na RAM, eliminando a E / S do disco.

Se você combinar cada um com força total, todos os seus pontos strongs anularão os benefícios mútuos na melhor das hipóteses. Posso afirmar com absoluta certeza porque o InnoDB armazenará em cache todos os dados e páginas de índice acessados, enquanto o memcached armazenará os mesmos dados do usuário.

O Memcached não armazenará as informações da página de índice que o InnoDB terá em seu buffer pool.

O Memcached armazenará apenas os dados exatos necessários. As páginas de dados do InnoDB podem conter dados de outras linhas da tabela.

O InnoDB facilita a recuperação de intervalos de dados melhor que o memcached, já que o memcached deve passar pela camada do banco de dados como uma etapa adicional.

Os dois produtos devem se tornar como um casal ( Perdoem a metáfora, eu estou felizmente casado há 16 anos ). Cada parceiro deve ajustar suas forças para acomodar o outro e encontrar um equilíbrio ideal em tudo. Então, é com InnoDB (esposa strong) e Memcached (marido strong).

O InnoDB pode alocar a quantidade de RAM necessária, com base na soma de todos os dados e páginas de índice, ou 75% da RAM instalada, o que for menor. Memcached, embora tenha menos memória inicial, pode exigir alguma forma de previsão para descobrir quanta memória se preparar para manipular.

Tenha em mente que quando se trata de leituras pesadas, os dados e páginas de índice no InnoDB se tornarão obsoletos no uso (mas atualizados no conteúdo) por causa do acesso a partes da RAM fora do buffer pool do InnoDB. para os mesmos dados que também residem no buffer pool InnoDB. Assim, gravar no memcached, que então ricocheteia os dados para o InnoDB, ainda ativará eventual E / S de disco. A capacidade do InnoDB de fornecer leituras rápidas é retirada pelo memcached. No mesmo fluxo de controle, o InnoDB só é necessário ao gravar e registrar transações pequenas para fornecer recuperação de falhas. (HHHMMMM isso soa como marido (ele faz as coisas de antemão e deve reconhecer e amar sua esposa) e esposa (cuida do marido, mas mantém sua dignidade), não é ???)

CONCLUSÃO

Se você previr corretamente quantos dados o memcached vai conter, você pode escalar o InnoDB em porcentagens de RAM total do memcached necessário (ou seja, se você planeja usar 8G de RAM para memcached, trabalhar com 6G ou menos para o buffer pool InnoDB ). Combinado, seu uso de memória deve ser menor que o total de RAM instalado. Uma vez que este equilíbrio seja atingido, o InnoDB e o memcached se complementarão completamente.

    
por 18.04.2011 / 18:44