Были запущены InnoDB
в качестве движка MySQL и с помощью phpMyadmin для администрирования нашей базы данных. Под Status
→ Query statistics
, phpMyadmin дает нам следующее:
Мы хотели бы знать, откуда эти цифры, потому что мы хотели бы создать Munin
график, показывающий эволюцию этой статистики во времени.
Когда мы запускаем SHOW STATUS;
запрос вот что мы получаем:
Innodb_rows_deleted 247555
Innodb_rows_inserted 822911
Innodb_rows_read 694934413
Innodb_rows_updated 15048
Как видите, разница существенная, хотя оба принимали почти одновременно.
Q: Вы знаете где phpMyadmin
получает свои значения от?
Обратите внимание на документацию MySQL на ПОКАЗАТЬ СТАТУС
Глядя на цифры, phpmyadmin должен использовать SHOW GLOBAL STATUS;
потому что он отображает статистику с момента запуска MySQL.
Когда вы используете SHOW STATUS;
, который возвращает статистику на уровне сеанса, которая перестает работать, когда соединение с БД завершается.
Так как RolandoMySQLDBA
упомянуто, первое, что нужно иметь в виду, это разница между SHOW GLOBAL STATUS
и SHOW STATUS
(см. документацию). Что касается значений, отображаемых phpMyadmin
, они получаются из Com_*
переменные что подтверждается исходным кодом:
server_status.php
$sql = "SELECT concat('Com_', variable_name), variable_value
FROM data_dictionary.GLOBAL_STATEMENTS
[...]
// For the percentage column, use Questions - Connections, because
// the number of connections is not an item of the Query types
// but is included in Questions. Then the total of the percentages is 100.
$name = str_replace(array('Com_', '_'), array('', ' '), $name);
После сравнения оказывается, что phpMyAdmin
отображает правильные значения (т.е. соответствует тому, что MySQL
сообщает).
Лучшие данные можно получить, задав запрос самому MySQL. Это также намного проще реализовать, пытаясь взаимодействовать с phpMyAdmin. Как phpMyAdmin получает свои числа, можно только догадываться, но я бы им не доверял.