Как рассчитать общее количество записей на диск, выполненных MySQL - PullRequest
1 голос
/ 05 сентября 2011

Я пытаюсь написать программу для подсчета общего количества операций записи на диск, выполненных MySQL. ..я знаю, что вы можете получить переменные с "показывать глобальный статус" Команда mysql. Мне нужна помощь в вычислении из списка переменных, которые на самом деле дают счет любого типа записи на диск, чтобы я мог суммировать счетчики, и моя проблема решена

mysql> показать глобальный статус;

дает значения следующих переменных

show variables;
etc ...

Innodb_data_writes        
Innodb_data_written       
Innodb_dblwr_pages_written        
Innodb_dblwr_writes       
Key_write_requests        
Key_writes        

Я не знаю значения некоторых переменных и что они означают, но я догадался и немного сузил их до

Innodb_data_writes - Общее количество записей данных

Innodb_dblwr_writes - Количество выполненных операций двойной записи.

Innodb_log_writes - Количество физических записей в файл журнала

Key_writes - количество физических записей блока ключей на диск

это правильно? Или есть какие-либо другие записи на диск MySQL, которые я рассмотрел? Или есть лучший способ рассчитать записи на диск, сделанные моим SQL

Ответы [ 2 ]

0 голосов
/ 27 сентября 2016

Переменные записи, которые вы упомянули, являются логическими, они не обязательно записывают на диск.Также вы должны учитывать записи в двоичный журнал и релейные журналы, когда они включены.

Еще один способ измерить это из Performance_Schema.Схема sys предоставляет сводки для различных типов записей.Вот пример:

https://github.com/mysql/mysql-sys#io_global_by_file_by_bytes--xio_global_by_file_by_bytes

Я думаю, что это решит вашу проблему.

Возвращаясь к глобальному статусу, вы можете разделить общую сумму записывает по отношению к общему количеству fsync, чтобы получить приблизительную оценку размера записи за N раз, опять-таки, это будет приблизительным, особенно при разных настройках синхронизации для файла журнала и журналов binlog / relay, когда он включен.

Есливам нужно измерить фактическую запись на диск для всего, что выходит из MySQL, включая временные таблицы, вы должны перейти на уровень ОС.В идеале вы должны разделить ваши данные MySQL на выделенный том или раздел, чтобы получить базовые инструменты из / proc / diskstats, а не искажать их с другими процессами.Посмотрите, как pt-diskstats вычисляет относительные значения из своего вывода, и вы можете решить свою проблему аналогичным образом.

0 голосов
/ 05 сентября 2011

Посмотрите на переменную Handler_write (и другие переменные Handle_*).

...