Очистить кэш InnoDB - PullRequest
       1

Очистить кэш InnoDB

6 голосов
/ 10 сентября 2011

У меня есть несколько отчетов, которые редко выполняются, и мне нужно, чтобы они выполнялись, не полагаясь на то, что они кэшируются где-либо в системе.При тестировании различных изменений схемы и sproc я обычно вижу, что первый запуск будет очень медленным, а последующие - быстрым, поэтому я знаю, что происходит некоторое кеширование, которое затрудняет тестирование изменений.Перезапуск mysqld или выполнение нескольких других больших запросов - единственные надежные способы его воспроизведения.Мне интересно, есть ли лучший способ.

MySQL Query Cache выключен.

Наблюдая за диском, я не вижу никаких операций чтения, кроме как при первом запуске.Я не очень хорошо знаком с дисковым кешем, но я ожидаю, что если там будет происходить кеширование, я все равно буду видеть чтение с диска, они будут очень быстрыми.

MONyog дает мне то, что я считаюокончательное доказательство, которое является коэффициентом попадания в кэш InnoDB.Наблюдая за этим, я вижу, что когда запрос быстрый, он попадает в буфер InnoDB, когда он медленный, он попадает на диск.

В реальной системе я с радостью позволю InnoDB сделать это, но для целей разработки и тестирования яинтересует наихудшие сценарии.

Я использую MySQL 5.5 на Windows Server 2008R2

1 Ответ

3 голосов
/ 06 марта 2012

Я нашел пост в блоге Percona , в котором говорится:

Для кэшей MySQL вы можете перезапустить MySQL, и это единственный способ очистить все кэши.Вы можете выполнить FLUSH TABLES для очистки кэша таблиц MySQL (но не метаданных таблицы Innodb) или сделать «set global key_buffer_size = 0;установите global key_buffer_size = DEFAULT ”, чтобы обнулить буфер ключей, но нет способа очистить пул буферов Innodb без перезапуска.

В комментариях он говорит:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...