Назад | Перейти на главную страницу

Статистика Innodb

Были запущены InnoDB в качестве движка MySQL и с помощью phpMyadmin для администрирования нашей базы данных. Под StatusQuery 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 получает свои числа, можно только догадываться, но я бы им не доверял.