[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кэширование запросов
isergi
Товарисчи,
Таков вопрос:

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

Т.е. получается смысл такой.

....
Запрос который выполняется больше чем 3 секунды
Кэширование, или выборка из кэша
Работаем далее
....

Товарищь под именем FatCat посоветовал кэшировать через файловую систему. Пример тута
Огромное спасибо ему. rolleyes.gif

Так вооот. Не подскажете ли какие ещё способы кэширования можно юзать? И что более производительное? dry.gif



Спустя 10 минут, 29 секунд (28.07.2009 - 11:51) Sylex написал(а):
isergi
это файловый кэш... очень популярен и вполне оправдывает себя..

при очень высоких нагрузках применяют memcache, думаю название говорит само за себя wink.gif

http://ru.php.net/memcache
http://habrahabr.ru/blogs/webdev/42607/

и гугл тебе поможет smile.gif

Спустя 2 минуты, 59 секунд (28.07.2009 - 11:54) isergi написал(а):
Не...мем кэш не катит.
Если например софтину ставить клиенту на сервер, и потом объяснять что у тебя чета не хватает, он офигеет. Надо как можно проще.
Ну спасибо за ссылки. Почитаю smile.gif

Спустя 7 минут, 23 секунды (28.07.2009 - 12:02) isergi написал(а):
Что скажете про такое вот решение?

PHP
function cache_query($sql$result) {  
     global 
$qcache;  
   
     
$qcache[$sql] = $result;  
   
     return 
true;  
 } 

 function 
db_query($sql) {  
     global 
$qcache;  
   
     if (empty(
$qcache[$sql])) {  
         
$result mysql_query($sql);  
         
$row mysql_fetch_assoc($result);  
         } else {  
         
$row $qcache[$sql];  
         }  
         return 
$row;  
 }


Не будет потом какой нибудь нехватки памяти?

Спустя 11 минут, 6 секунд (28.07.2009 - 12:13) Sylex написал(а):
isergi
ну ты даешь))
не хватки памяти не будет smile.gif

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

Приведи пример, где тебе нужен "такой кэш"

Спустя 4 минуты, 22 секунды (28.07.2009 - 12:17) olgatcpip написал(а):
А в постгере есть вьюшки (views) rolleyes.gif
А ещё я видела, что результаты запросов в сесси хранят blink.gif ....

Спустя 3 минуты, 17 секунд (28.07.2009 - 12:20) Sylex написал(а):
olgatcpip
че за вьюшки? представления что-ли? они и в MySQL есть, если ты о них, и не знаю зачем они здесь..

Спустя 7 минут, 13 секунд (28.07.2009 - 12:27) isergi написал(а):
По поводу View, они не нужны. Эт точно.
В Сессиях хранить результат? о_О Эээ...ну чет не слышал.

Цитата (Sylex 28.07.2009 - 09:13)

ну ты даешь))
не хватки памяти не будет


Ну я Х3 smile.gif Не разу не юзал это... вот по этому и решил спросить ))


Цитата (Sylex 28.07.2009 - 09:13)

Приведи пример, где тебе нужен "такой кэш"


Чет даже затрудняюсь ответить ) Ну есть сайт, лазия по нему, встречаются запросы из огромного количества записей. Так вот если запрос выполняется больше чем 3 секунды, его надо кэшировать, и доставать потом если опять к нему обратимся.

Думаю тот вариант, про который я спросил, самый оптимальный.

Спустя 13 минут, 1 секунда (28.07.2009 - 12:40) sergeiss написал(а):
Тут, опять же, зависит от объёма полученных данных.

Если это простое число (строка), или небольшой набор чисел (строк), то имеет смысл хранить их в отдельном файле или в специальной таблице.

Спустя 2 минуты, 17 секунд (28.07.2009 - 12:43) Sylex написал(а):
isergi
так вот в твоем случае скрипт отработает - и весь твой "кэш" пропадает smile.gif

используй файловый и не парься

Спустя 7 минут, 40 секунд (28.07.2009 - 12:50) Nikitian написал(а):
Если запрос выполняется более 3 секунд, то покажите такой запрос - нужен ли он вообще и не стоит ли его оптимизировать?

От себя: делал на файлах, но перешёл на memcache. На работе пришлось на один посещаемый сайт поставить кэш на файлах, т.к. вечерами он ронял сервак - теперь сервак работает, но вот не ручаюсь за долгую жизнь винтов (на этом сайте более 100 запросов к бд на страницу и чую, винт быстро сдохнет из-за лени админа, которому лень ставить memcache).

Если нет возможности делать memcache, то остаются только файлы. Экзотические методы хранения в памяти не рассматриваем, т.к. для этого надо пересобирать пхп, а тогда проще мемкэш поставить ))

Спустя 13 минут, 26 секунд (28.07.2009 - 13:04) sergeiss написал(а):
Цитата (Nikitian @ 28.07.2009 - 13:50)
Если запрос выполняется более 3 секунд, то покажите такой запрос - нужен ли он вообще и не стоит ли его оптимизировать?

Из моего опыта: бывают такие запросы (до нескольких десятков секунд доходит иногда), и наоптимизировать их уже не получается. Также, впрочем, не всегда их можно и закэшировать smile.gif

Естественно, столь "объёмные" запросы получаются при использовании больших таблиц, да еще когда проводится какой-то анализ данных, требующих всяких объединений данных, и нескольких вложенностей запросов.

Спустя 16 минут, 36 секунд (28.07.2009 - 13:20) isergi написал(а):
Sylex

Файловый всё таки не очень такой уж юзабельный. Хотелось бы конечно как нибудь всё таки через переменные и всё такое не файловое.

sergeiss
Вот как раз это продолжение той темы про 100000 записей в таблице, т.е. решили их всё таки как то кэшировать.


Мемкеш тут не катит, потому что не все его ставить будут.

Вот думаю как бы так через массив $qcache но чтобы небыло потери кэша, как сказал Sylex .

Спустя 29 минут, 45 секунд (28.07.2009 - 13:50) Sylex написал(а):
Цитата (isergi @ 28.07.2009 - 16:20)
100000 записей в таблице

это немного

Цитата (sergeiss @ 28.07.2009 - 16:04)
Файловый всё таки не очень такой уж юзабельный.

Цитата (isergi @ 28.07.2009 - 16:20)
Мемкеш тут не катит


ну делай как знаешь, ты умный

Спустя 5 часов, 34 минуты, 24 секунды (28.07.2009 - 19:25) PandoraBox2007 написал(а):

Спустя 15 часов, 56 минут, 3 секунды (29.07.2009 - 11:21) isergi написал(а):
PandoraBox2007

Спасибо. Отличная вещчь smile.gif

Спустя 3 часа, 15 минут, 28 секунд (29.07.2009 - 14:36) Sylex написал(а):
isergi
это опять пример тебе файлового кэша, что я и говорил тебе

Спустя 2 часа, 49 минут, 4 секунды (29.07.2009 - 17:25) isergi написал(а):
Sylex

Знач я не правильно поняли друг друга. Я приводил пример который мне объяснили в качестве файлового.

Как то думал что про это говорилось. ВОт я его и отвергал.

Спустя 1 час, 37 минут, 46 секунд (29.07.2009 - 19:03) Sylex написал(а):
Цитата (isergi @ 29.07.2009 - 20:25)
Я приводил пример

ты НЕ приводил пример

Спустя 17 часов, 23 минуты, 23 секунды (30.07.2009 - 12:26) isergi написал(а):
Цитата (isergi 28.07.2009 - 08:41)

Товарищь под именем FatCat посоветовал кэшировать через файловую систему. Пример тута


Эни квешнс? wink.gif

Спустя 31 минута, 22 секунды (30.07.2009 - 12:58) Sylex написал(а):
Цитата (isergi @ 30.07.2009 - 15:26)
Эни квешнс? wink.gif


no questions, no comments wink.gif


_____________
Рекурсивный салат - огурцы, помидоры, салат.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.