Запрос MySQL InnoDB, чтобы найти, находится ли запись в его пуле буферов - PullRequest
0 голосов
/ 25 мая 2018

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

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

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

1 Ответ

0 голосов
/ 28 мая 2018

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

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

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

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

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

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

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

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

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

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

...