O MySQL já mantém contadores internos:
mysqladmin ext | grep -e 'Com_\(update\|select\|insert\)'
não há necessidade de arquivos de log / tables / tcpdumping / maatkit.
Eu estou tentando contar todas as consultas SELECTS, UPDATES, INSERTs no meu servidor MySQL. A idéia principal é dizer, no final do dia, "nós tivemos x querys hoje, sendo x1 selects, x2 inserts, etc".
Como posso fazer isso?
Obrigado !!
As versões atuais do MySQL suportam dois tipos diferentes de logs de consulta:
Primeiro, o log de consulta geral rastreia todas as instruções executadas no servidor MySQL, incluindo SELECTs. Mas é lento, ineficiente e pode facilmente matar o desempenho de um banco de dados de produção, então tenha cuidado com isso.
Dependendo da versão do MySQL que você está executando, você deve usar a opção '--log' ou as opções '--general-log' e '--general_log_file', juntas, para ativar o log de consulta geral e controlar onde ele grava. Os documentos têm mais detalhes:
Caso a penalidade de tempo de execução do log de consulta geral seja muito alta, você poderá considerar se o log binário (log binário) pode atender às suas necessidades. O log binário rastreia quaisquer instruções que possam atualizar dados ou esquemas, mas não instruções somente leitura, como SELECT. Mas o log binário é muito rápido e eficiente em disco, e também pode ser usado para replicação, backups / restaurações, etc.
A opção básica para habilitar o log binário é '--log-bin', e há algumas outras opções relacionadas que controlam exatamente como ele funciona. O utilitário 'mysqlbinlog' (parte da instalação central do servidor MySQL) pode analisar o formato binário do log binário de volta em instruções SQL, que você pode canalizar para qualquer script ou programa que você usa para resumir as consultas (por exemplo, mysqlbinlog <BIN_LOG_FILENAME> | <YOUR_SCRIPT_NAME>
. páginas de documento para mais informações:
são todos bons e perfeitos - as respostas mencionadas por Irosa e Ryan são ótimas, mas você pode executá-las de forma completa - sem ativar o registro. dê uma olhada em mk-query-digest de maatkit . ele pode analisar não apenas os logs do mysql, mas também o tráfego capturado com o tcpdump. e 'de graça', você terá um bom detalhamento dos tipos de consulta / tempo de execução, etc.
Edite my.cnf e adicione
log=/path/to/whatever/file/you.want
e reinicie o MySQL.
Você encontrará todas as consultas registradas no arquivo que você especificar.
Além das duas soluções mencionadas (log de consulta do MySQL e mk-query-digest
), você pode querer dar uma olhada em MySQL Proxy que pode ser usado para registrar as consultas enviadas ao seu mysqld
.
Tags mysql