кэшировать результат запроса mysql? - PullRequest
0 голосов
/ 25 апреля 2011

Я использую несколько запросов mysql на странице для извлечения данных из нескольких таблиц с помощью операторов подготовки mysqli.

Допустим, у меня на странице примерно 20 запросов из таблиц базы данных.Поскольку запросов так много, я хотел бы повысить производительность, сохраняя результаты в кеше в течение нескольких минут?Это хорошая идея?Если да, как я могу сохранить результаты, используя кеш для, например, следующего запроса?

$city = "Amersfoort";

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
    $stmt->bind_param("s", $city);
    $stmt->execute();
    $stmt->bind_result($district);
    $stmt->fetch();
    printf("%s is in district %s\n", $city, $district);
    $stmt->close();
}

Спасибо.

1 Ответ

2 голосов
/ 25 апреля 2011

Если операторы SQL дешевы в обработке, вам, вероятно, не нужно их кэшировать.Если они требуют больших вычислений или работают с очень большими наборами данных, вам может понадобиться кэш.Помните, что кеш должен быть быстрее, чем SQL-запрос.

Существует несколько способов кеширования в PHP:

  • Файловый кеш, сериализация данных и сохранение их в файле с именемкак хэш запроса.Помните, что получить время жизни кэша, одновременный доступ и т. Д. Сложно - поэтому подумайте об использовании библиотеки, которая делает это, то есть с PEAR Cache или Cache_Lite
  • memcached
  • разделяемая память в качестве кэша, т. Е. С использованием функций APC, таких как apc_add

Вы также можете кэшировать всю страницу или ее части.вместо единичных запросов.

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