Eu obtive estatísticas por meio de cacti
, com o plug-in mysqlstats
.
Se alguém fizer isso através da linha de comando, com um script de algum tipo, agradeço a informação.
Estou otimizando a configuração de um servidor MySQL, executando apenas o Bromine. Isso não é específico para o aplicativo e foi observado apenas por completo. Eu estou tentando determinar se a mudança do MyISAM para o InnoDB é uma opção melhor, em alguns escrever tabelas dominantes. essas tabelas usam a maioria das gravações do servidor, mas também a porcentagem mais alta de todas as consultas. Eu não quero fazer todas as tabelas do InnoDB, mesmo que isso me salve dessa vez. Eu prefiro o MyISAM acima de tudo; O InnoDB tem suas próprias forças, o que faz sentido para essas escritas pesadas tabelas específicas.
Eu sei como ver as estatísticas de leitura / gravação da instância do MySQL e executar todos os scripts de análises recomendados. Eu gostaria de saber, como eu vejo as estatísticas de leitura / escrita em uma tabela específica?
Se alguém, com experiência relevante, tiver alguma estatística recomendada para analisar. Eu apreciaria a entrada.
ATUALIZAÇÃO: Eu postei sobre este assunto nos foruns do Bromo, e eles me informaram quais tabelas são escritas pesadamente. Isso realmente não responde à pergunta, como eu gostaria de saber de qualquer maneira.
Apenas por questão de integridade, aqui está minha tabela / mecanismo
Name Engine
QRTZ_BLOB_TRIGGERS MyISAM
QRTZ_CALENDARS MyISAM
QRTZ_CRON_TRIGGERS MyISAM
QRTZ_FIRED_TRIGGERS MyISAM
QRTZ_JOB_DETAILS MyISAM
QRTZ_JOB_LISTENERS MyISAM
QRTZ_LOCKS MyISAM
QRTZ_PAUSED_TRIGGER_GRPS MyISAM
QRTZ_SCHEDULER_STATE MyISAM
QRTZ_SIMPLE_TRIGGERS MyISAM
QRTZ_TRIGGERS MyISAM
QRTZ_TRIGGER_LISTENERS MyISAM
activities InnoDB
browsers MyISAM
browsers_nodes MyISAM
combinations MyISAM
combinations_requirements MyISAM
commands InnoDB
configs MyISAM
echelons InnoDB
groups MyISAM
jobs InnoDB
myacos MyISAM
myaros MyISAM
myaros_myacos MyISAM
nodes MyISAM
operatingsystems MyISAM
plugins MyISAM
projects MyISAM
projects_reports MyISAM
projects_users MyISAM
reports MyISAM
requirements MyISAM
requirements_testcases MyISAM
seleniumservers InnoDB
sites MyISAM
suites InnoDB
testcases MyISAM
testcasesteps MyISAM
tests InnoDB
types MyISAM
users MyISAM
Você não pode olhar para as tabelas uma vez e determinar quais delas são mais pesadas, e isso é especialmente verdade se o banco de dados estiver em funcionamento por um tempo considerável. Devido à alteração dos padrões de uso, uma tabela que parece ter recebido um grande número de gravações pode não estar mais recebendo nenhuma.
Você precisa tirar um instantâneo de todas as tabelas no momento t e, em seguida, em outro instantâneo no tempo t + 1 (em que o intervalo pode ser uma hora, um dia ou mais provavelmente uma semana, possivelmente um mês). Depois de tê-los, você pode medir a diferença entre os dois e calcular a atividade a partir disso.
Você deseja observar a proporção de leituras de tabela comparada às gravações de tabela. Uma proporção de 1 significa que uma tabela nunca é gravada, apenas lida. E uma proporção de 0 significa que uma tabela é escrita apenas para, nunca lida. A maior parte da mesa, naturalmente, fica em algum lugar no meio.
SELECT t.table_name, s.rows_read/ (s.rows_read * 1.0 + s.rows_changed) as read_ratio, s.rows_read, s.rows_changed
FROM information_schema.tables t
LEFT JOIN information_schema.table_statistics s USING (table_schema, table_name)
ORDER BY 2, 3, 4, 1;
A variável global userstat
deve ser definida como on
para registrar a atividade nessas tabelas de estatísticas.
Coloque a consulta acima em um arquivo e, a partir da linha de comando, você pode executar:
mysql -BNe < tablestats.sql