Eu sei que o consenso parece ser de aproximadamente 75% de ram deve ser dedicado ao pool de buffers. Porém, estou mais interessado no número ideal de instâncias do buffer pool. Quais são algumas coisas a considerar ao determinar a configuração?
Por exemplo, digamos que eu tenha um buffer pool de 75 GB. Devo apenas atribuir 75 instâncias de buffer pool de 1 GB cada? 15 de 5GB cada? Ou 10 com 7,5 GB cada?
Devo começar com um único buffer pool e aumentá-lo com base no bloqueio ou não?
Qual deve ser o número máximo de instâncias baseado em - núcleos disponíveis?
Obrigado - Sua resposta é muito apreciada.
INSTÂNCIAS DE BUFFER POOL
A regra geral que costumo usar é baseada em um programa especial no ambiente Linux
Quando eu executo isso, recebo a seguinte saída
Isso me diz rapidamente quantas CPUs e núcleos tenho no meu servidor de banco de dados.
Em geral, defino innodb_buffer_pool_instances para o número de CPUs físicas ou o número de núcleos. No seu particular, defino innodb_buffer_pool_instances para 4 ou 16.
TAMANHO DO BUFFER POOL
Se você tornar o InnoDB Buffer Pool maior que 50% da RAM instalada, o mysqld fará com que o sistema operacional comece a trocar ... MAL !!!! Se você precisa de um Buffer Pool tão grande, ajustar innodb_buffer_pool_instances torna-se ainda mais crítico.
EPÍLOGO
Assim que innodb_buffer_pool_instances foi introduzido pela primeira vez, eu imediatamente o experimentei. Eu tinha um cliente que tinha um servidor de banco de dados de 192 GB, dual hexacore com um buffer pool de 162 GB. Eu simplesmente configurei para 2 e tudo funcionou muito bem. Por favor, veja minha postagem antiga de 12 de fevereiro de 2011 sobre isso: Como você ajusta o MySQL para uma carga de trabalho pesada do InnoDB?
DE UMA CHANCE !!!
Você deve usar a combinação de
innodb_buffer_pool_size
acordo cominnodb_buffer_pool_instances
Você deve definir a
innodb_buffer_pool_instances
opção de configuração para um valor maior que 1 (o padrão) até 64 (o máximo). Esta opção só tem efeito quando você define oinnodb_buffer_pool_size
tamanho de 1 gigabyte ou mais. O tamanho total especificado é dividido entre todos os buffer pools. Para melhor eficiência, especifique uma combinação deinnodb_buffer_pool_instances
einnodb_buffer_pool_size
para que cada instância do conjunto de buffers tenha pelo menos 1 gigabyte.