Eu estava tentando descobrir como calcular o gcache certo para o meu servidor e me deparei com o seguinte post discutindo como fazer isso:
https://www.percona.com/blog/2014/09/08/calculate-correct-size-percona-xtradb-clusters-gcache/
No post, a conversa sobre fazer o seguinte para obter os valores necessários para o cálculo:
show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';
select sleep(60);
show global status like 'wsrep_received_bytes';
show global status like 'wsrep_replicated_bytes';
Minha pergunta é, executar o select sleep(60) no bloco de produção todas as leituras no MySQL (mantendo o thread mysqld ocupado)? Como posso calcular o melhor valor de gcache em produção?
A resposta para sua primeira pergunta é não
Quando você executa a função Sleep, ela bloqueia apenas a sessão atual e não está relacionada a outras sessões. Para que todas as outras sessões funcionem corretamente
Mas sobre sua segunda pergunta.
Nota : gcache usado para armazenar apenas writesets no estilo de buffer circular.
Normalmente um serviço tem um horário de pico em que os usuários têm grande interação com ele.
Então no horário de pico do sistema execute aquelas consultas que você disse na sua pergunta.
Depois disso, use esta fórmula para encontrar bytes de dados de writesets por minuto
Bem, agora você pode decidir por quanto tempo deseja manter as alterações no servidor.
Por exemplo, se os dados dos conjuntos de gravação forem 10 MB por minuto e você planeja manter os dados alterados em 24 horas, será necessário definir o tamanho do gcache para 14.400 MB.
Nota: Na minha opinião, para mais certeza, adicione 20% a mais aos bytes de dados de writesets por minuto. Neste caso, por exemplo, considere 12 MB em vez de 10 MB.