Обновление таблицы БД при кешировании результата Mysqli - PullRequest
0 голосов
/ 28 мая 2020

На моем веб-сайте уже много посещений ежедневно, поэтому я думаю о предоставлении результатов Mysqli Db из кеша.

Я пробую это так:

$res   = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT * FROM mytable WHERE id = $id");

while ($res->fetch_assoc()) {...}

Если я Я не ошибаюсь, в первый раз этот запрос будет поступать из БД и будет сохранен в кеше. И каждый последующий вызов будет происходить только из кеша?

И мой вопрос: если я вставлю другие данные в эту таблицу, они будут показаны? Потому что его нет в кеше.

1 Ответ

1 голос
/ 28 мая 2020
  1. «ежедневно уже много посещений» не является веской причиной для включения кеширования.
  2. Кэш запросов предлагается mysql <8.0 из коробки, хотя по умолчанию в 8.0 отключен. Он делает недействительным кеш при изменении данных. </li>
  3. Чтобы использовать MYSQLND_QC_ENABLE_SWITCH, вы должны установить специфицированное c PHP расширение, и я сомневаюсь, что вы это сделали или собираетесь сделать это
  4. Как и любое другое Стороннее решение для кэширования, плагин кеширования результатов запроса Mysqlnd требует ручного аннулирования, что означает, что новые данные не будут отображаться, пока не будет достигнут TTL. В целом этот плагин кажется совершенно бесполезным.
  5. «ежедневно уже много посещений» не является веской причиной для включения кеширования, поэтому вам действительно следует оставить свой SQL в покое и просто оптимизировать запросы, как вы всегда должен
...