Estou tendo muitos esquemas de banco de dados no servidor mysql 5.6, agora o problema aqui é que eu quero capturar as consultas para apenas um esquema.
Não consigo ativar o log de consultas para todo o servidor, pois um dos meus esquemas está altamente carregado e afetará o servidor.
É de qualquer maneira, qualquer ferramenta através da qual eu só poderia registrar as consultas por esquema único.
Encontrei um gráfico de benchmarking que mostra o impacto nas transações / segundo quando o log de consultas está ativado.
Respostas:
Pergunta interessante e um +1. Fiquei interessado por isso, porque posso ver vários casos de uso para essa funcionalidade.
Infelizmente, para o seu caso em que você não pode ativar o log geral, existe apenas uma solução alternativa bastante inadequada.
Isso é para usar a variável SQL_LOG_OFF para desativar o log para uma determinada conexão. Uma solução ideal seria ter uma variável "SQL_LOG_ON" como se pode fazer no Oracle (equivalente) - talvez você possa tentar desativar o logoff para todas as conexões, exceto as de interesse?
Além disso, e lamentavelmente, isso requer o
SUPER
privilégio. Novamente, isso pode não ser (mesmo que provavelmente não seja) no seu caso.Dependendo da gravidade do seu problema, do horário de trabalho e da carga do servidor em determinados horários, você poderá encontrar um uso para o resumo de consulta de consulta da Percona, que pode ajudar na análise de log. Pequeno conforto, mas, como de costume, o PostgreSQL está nas ruas à frente do MySQL ( 1 , 2 ).
Se você gostaria de registrar uma solicitação de recurso, ficaria feliz em acompanhar um "eu também" se você postar o link aqui.
fonte
Se você está tão perto de cair que não pode ativar o log geral em FILE, você tem problemas piores; eles precisam de conserto.
Eu suspeito, sem nenhum conhecimento real, que o slowlog teria um impacto semelhante, especialmente com
long_query_time = 0
.5.7 possui um recurso "reescrita de consulta". Algum truque pode ser usado lá. (Mas, novamente, há algumas despesas gerais, que devem ser comparadas.)
Quanto tempo você deseja capturar as consultas? Você está apenas procurando a fonte de uma ação impertinente? Ou você está tentando coletar consultas para criar uma referência realista para essa tabela? Ou alguma outra coisa?
Você tem a replicação ativada? Você está interessado em leituras? Ou escreve? Ou ambos?
Quantos threads estão ativos simultaneamente? A referência que você mostrou indicou que, para 1, o log possui uma sobrecarga baixa. É o bloqueio da tabela no MyISAM ou CSV que está matando o processamento por alta simultaneidade.
Seu segundo gráfico mostra que os clientes realmente devem estar restritos a cerca de 5 a 8 conexões simultâneas - caso contrário, a taxa de transferência realmente diminui! O que eram
max_connections
eMax_used_connections
para esse gráfico?fonte