Что на самом деле делает mysql, когда состояние основного потока «делает контрольную точку»? - PullRequest
1 голос
/ 09 июля 2009

Я заметил, что mysql (5.0.60) часто зависает на несколько минут под нагрузкой, когда сервер полностью не отвечает. Я смог изолировать это, чтобы это происходило только тогда, когда innotop показывает состояние основного потока как «создание контрольной точки».

Что на самом деле делает сервер в этот момент?

Ответы [ 3 ]

1 голос
/ 09 июля 2009

Контрольная точка - это когда сервер базы данных фиксирует все изменения в памяти на диске.

1 голос
/ 29 августа 2009

Я решил расширить комментарий Прадипа:

Нечеткие контрольные точки InnoDB (по умолчанию) могут очень легко отставать при сбрасывании грязных страниц на диск *. Это может создать проблему при приближении к концу файла журнала и принудительной установке контрольной точки.

Это хорошо известная проблема InnoDB, и есть сторонние патчи, которые могут помочь. В XtraDB innodb_adaptive_checkpoint ускоряет очистку страницы, когда конец становится ближе:

http://www.percona.com/docs/wiki/percona-xtradb:patch:innodb_io

  • Объяснение, почему это немного сложнее. Основной поток имеет несколько жестко закодированных констант, чтобы определить, «занят» ли сервер для очистки страниц, например, если уже произошло более 100 операций ввода-вывода в секунду («IOPS»). Конечно, 100 операций ввода-вывода в секунду - это количество операций, которые может выполнить один диск 7200 об / мин, и может не иметь смысла, если на вашем сервере есть RAID и несколько дисков. XtraDB также имеет опцию для описания innodb_io_capacity.

Аналогичный патч был выпущен InnoBase в плагине 1.0.4 (пока не в официальном выпуске MySQL).

1 голос
/ 09 июля 2009

Этот ответ на ваш вопрос, а также имеет несколько решений ваших проблем:

Как вы, возможно, знаете, механизмы хранения Innodb используют метод Fuzzy Checkpointing как часть стратегии восстановления. Это очень хороший подход, который означает, что базе данных никогда не нужно «останавливаться» для полного сброса измененных страниц, но вместо этого очистка грязных страниц происходит постепенно небольшими порциями, поэтому загрузка базы данных очень равномерна.

http://www.mysqlperformanceblog.com/2006/05/10/innodb-fuzzy-checkpointing-woes/

...