Кэширование SQL запросов

  • Автор темы Автор темы fog
  • Дата начала Дата начала

fog

Рыцарь Джедай
Кэширование SQL запросов

Много раз слышал про «Кэширование SQL запросов», но так до сих пор не совсем понимаю что это такое, как оно работает и главное когда это полезно применять. Расскажите пожалуйста, или посоветуйте что по этому поводу почитать.
 
Нет, не читал. Спасибо за сслку, теперь прочту.
но я имел в виду немного другое. Кэширование результатов выборки уже средствами пхп, сохранение в массив и использование во время выполнения скрипта, сохранение в файл для последующих вызовов.
 
Ну, я же говорю что ничего об этом не знаю, я просто предположил :-)
 
вариант - или кешировать запросы на уровне самого мюскла - тебе дали ссылку - либо вообще этим не морочиться...

а по поводу того чтобы сохранять запрос в массив и спользовать в течении скрипта - я надеюсь не де делаешь несколько запросов в мюскл из разных мест скрипта чтобы добыть одни и теже данные?
 
Автор оригинала: nagash
вариант - или кешировать запросы на уровне самого мюскла - тебе дали ссылку - либо вообще этим не морочиться...
1) не мысклем единым жив человек
2) посылаем запрос к базе данных (которая, вообще говоря, может быть на другом сервере), база создаёт новый тред, база проверяет наличие запроса в своём кэше (при этом база, вообще говоря, не знает, какие у тебя данные и что из них имеет смысл кэшировать), база отправляет тебе результат (вполне возможно, что опять по сети).
другой вариант
проверяем наличие рез-та запроса в своём кэше (при этом если запрос смысла кэшировать нету, то и не заморачиваемся), загружаем результат если есть, если нет --- отправляем запрос к базе.

ну-ка, подумай-ка, какой вариант лучше?
 
Name:
Иногда может быть полезно.
Можно вместе с форматированием кэшировать.
Ну, это само собой. Но это другое.

Sad Spirit:
Ну, это примерно то о чём я говорю. Но, признаться, об удалённой базе даннх я не думал, я хотел узнать имеет ли смысл кэшировать запросы при обычных условиях, т.е. база легко доступна. Видимо не имеет :-) Или имеет, но в очень в редких случаях, ведь, действительно, одни и те же запросы выполнять... как минимум странно :-) В крайнем случае при таком раскладе можено складывать в массив хэш запроса, и идентификатор его результата, и потом делать
mysql_data_seek ($res, 0); (или аналог)
Разве что, при выборках с лимитами, после выборки 1, 100, 10-20 - брать из кэша. (такая идея была в треде, ссылку на который я дал)
 
Автор оригинала: fog
Но, признаться, об удалённой базе даннх я не думал, я хотел узнать имеет ли смысл кэшировать запросы при обычных условиях, т.е. база легко доступна. Видимо не имеет :-) Или имеет, но в очень в редких случаях, ведь, действительно, одни и те же запросы выполнять... как минимум странно :-)
Почему странно?
Конкретный сайт, конкретная страница: сеансы кинотеатров в Москве на сегодня и завтра. Запрос выдаёт один и тот же результат, если не меняется "сегодня" (что происходит раз в сутки) или если не меняется расписание (что происходит не чаще). При этом запросом можно пугать маленьких детей и выполняется он ощутимое время, а страницу запрашивают часто. Явный кандидат на кэширование.
 
Ыыыы, я имел в виду, много одинаковых запросов за время одного выполнения скрипта.
Кэшировать готовую страницу - само собой.
 
fog
ненадо делать одинаковые запросы в течении одного скрипта...
 
Автор оригинала: fog
Ыыыы, я имел в виду, много одинаковых запросов за время одного выполнения скрипта.
Кэшировать готовую страницу - само собой.
Много одинаковых запросов во время выполнения одного скрипта --- глупость, надо сразу считывать рез-т в массив и дальше работать с ним.

Кэшировать можно не только "готовую страницу", но и куски страницы. Т.е. у тебя есть запрос, общий для всех пользователей и есть части страницы для каждого конкретного пользователя...
 
ненадо делать одинаковые запросы в течении одного скрипта...
Много одинаковых запросов во время выполнения одного скрипта --- глупость, надо сразу считывать рез-т в массив и дальше работать с ним.
я это сам сказал уже :-)


Всем большое спасибо за участие, вопрос ожно считать исчерпанным :)
 
Сверху