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

как отключить все типы кешей на сервере mysql, чтобы выполнять тестирование производительности для моих запросов

Я использую Mysql Server 5.6.15, и у меня огромная база данных со множеством сложных запросов.

кажется, что когда я запускаю запрос в первый раз, это занимает X времени.

когда я выполняю его снова, это занимает меньше X времени. что означает, что что-то было кэшировано.

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

есть ли способ отключить все типы кеширования в mysql, чтобы я мог правильно проверить время выполнения моих запросов?

любая информация по этому поводу будет принята с благодарностью.

На самом деле вам нужно, чтобы пропуски кэша запросов были близки к 100%. Думаю, у меня есть то, что я ищу. 9 июля 2011 года я ответил на этот пост в DBA StackExchange: Тестирование скорости запроса.

Вот этот ответ:

Вы можете создать среду стресс-тестирования, чтобы результаты запроса отображались как можно в реальном времени. Например, буфер ключей MyISAM (размер регулируется key_buffer_size) по умолчанию составляет 8 МБ, а минимальное значение - 8 (правильно, 8 байтов). Он отвечает за хранение индексных страниц из файлов .MYI. Установите это значение на 8, и каждый поиск по ключу в MyISAM должен читаться снова и снова.

Это также будет работать в принципе с InnoDB. Размер пула буферов InnoDB по умолчанию (регулируется innodb_buffer_pool_size) составляет 128 МБ, а минимальный - 1 МБ (в MySQL 5.5). Он отвечает за хранение данных и страниц индекса из файлов .ibd и / или ibdata1. Установите это значение в 1M и каждый поиск по ключу в InnoDB (который всегда включает дополнительный поиск в кластеризованном индексе строки (gen_clust_index)) надо читать снова и снова.

Для дополнительного стресса установите для query_cache_type значение 0, чтобы запросы не кэшировались.

Просто добавьте эти три (3) минимальных значения в /etc/my.cnf

[mysqld]
innodb_buffer_pool_size=1M
key_buffer_size=8
query_cache_type=0

и перезапустите MySQL.

Это должно обеспечить выполнение всех запросов с минимальным лучшим (или худшим) результатом каждый раз.

Попробуйте !!!

Ну, не сиди и пялишь на монитор ...

Попробуйте !!!