Запрос MySQL InnoDB, чтобы найти, находится ли запись в его пуле буферов

0

Для нас очень важно получить высокое время отклика для нашего PHP-скрипта, который запрашивает большую базу данных. По сути, он получает информацию о пользователе для пользователя, посетившего страницу. В db могут быть миллионы пользователей.

Мы бы вообще не пытались использовать пользовательские данные, если запись еще не находится в буфере пула InnoDB базы данных MySQL и использовать информацию только в том случае, если она присутствует в вышеупомянутом кеше.

Есть ли способ напрямую спросить Mysql/InnoDB, находится ли запись в кеше?

Теги:
caching
innodb
buffer

1 ответ

0

Гейзенберг говорит, что это будет неэффективно. (Хорошо, может быть, это плохой парафраз.)

В то же время у вас не будет миллионов пользователей, кабели Ethernet будут таять.

Что ты хочешь делать? Скажите "ваши данные не находятся в кеше, поэтому вы не можете получить доступ к своей учетной записи"? Я сомневаюсь.

Основная строка для миллиона пользователей может составлять 0,1 ГБ. Как крошечная машина?

Хорошо, я серьезно.

Нет, нет способа спросить, кэшируется ли строка в buffer_pool.

Я утверждаю, что нет необходимости спрашивать. Подумайте, что значит "кэшировать" (в механизме LRU). Пользователь, который вернется перед своей записью, окажется в кеше, найдет его в памяти; другие пользователи получат дополнительную задержку в миллисекундах для получения своих данных. И это предполагает, что у вас нет места для кэширования всего 0,1 ГБ все время (как только buffer_pool разогревается).

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

Большая картина... Пусть говорят, что весь ваш набор данных слишком велик для буферного пула. Тогда оптимизация заключается в минимизации обращений к диску. Если вместо этого у вас неэффективное сканирование таблиц (из-за отсутствия соответствующих индексов), все из-за слишком быстрого выхода из кеша.

Если вы хотите более подробно обсудить производительность веб-страницы php, дайте нам некоторые подсказки о размере набора данных, размере ОЗУ, типах запросов и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню