Está ajustando o InnoDB_Buffer_Pool_Size Importante no Solaris ZFS?
Pergunta
Estamos executando um banco de dados moderado tamanho (350GB) com algumas tabelas razoavelmente grandes (algumas centenas de linhas, 50GB) em um servidor razoavelmente grande (2 x xeons quad-core, 24GB RAM, 2,5 "10k discos em RAID10), e estão recebendo algumas inserções muito lentas (por exemplo, inserção simples de uma única linha levando 90 segundos!).
Nosso InnoDB_Buffer_Pool_Size é definido como 400MB, o que normalmente seria muito baixo para este tipo de configuração.No entanto, nosso provedor de hospedagem aconselha que isso é irrelevante ao executar na ZFS.Ele está certo?
(Desculpas para o poste duplo em https://dba.stackexchange.com/questions/1975/is-tuning-the-innodb-buffer-pool-size-important-on-solaris-zfs , mas não tenho certezaO público está lá!)
Solução
Eu ainda seria definir o InnoDB_Buffer_Pool_Size muito mais alto que 400m. A razão? O InnoDB Buffer Pool ainda armazenará em cache as páginas de dados e indexação que você precisa para tabelas acessadas com freqüência.
Execute esta consulta para obter o Innodb_Buffer_Pool_Size recomendado no MB:
Selecione Concat (Rodada (KBS / POWER (1024, se (PW <0,0, se (PW> 3,0, PW))) + 0.49999), Substr ('KMG', se (PW <0, 0, se (pw> 3,0, pw)) + 1,1)) recomendado_innodb_buffer_pool_size de (Selecione Soma (data_length + index_length) KBS de informações_schema.Tables onde o motor= 'InnoDB') a, (selecione 2 PW) B;
Basta usar o resultado dessa consulta ou 80% da RAM instalada (no seu caso 19660M), o que for menor.
Eu também definiria o InnoDB_Log_File_Size para 25% do tamanho do pool de buffer InnoDB. Infelizmente, o valor máximo de InnoDB_LOG_FILE_SIZE é 2047m. (1m curto de 2G) Assim, Set InnoDB_LOG_FILE_SIZE para 2047m desde 25% do InnoDB_Buffer_Pool_Size da minha configuração recomendada é de 4915m.
Ainda outra recomendação é para Desativar a conformidade com ácido . Use 0 ou 2 para innodb_flush_log_at_trx_commit (o padrão é 1 que suporta a conformidade do ácido) Isso produzirá uma escrita de innodb mais rápida no risco de perder até 1 segundo de transações em caso de falha. .
Outras dicas
Pode valer a pena ler inserções lentas do mysql Se você ainda não tiver. Também Este link para o MySQL Docs sobre o assunto - especialmente no que diz respeito a considerar uma transação se você estiver fazendo várias inserções para uma tabela grande.
mais relevante é Este artigo do MySQL sobre o desempenho de InnoDB e ZFS que considera especificamente o tamanho do pool de buffer.