За последние 24 часа нас посетили 18880 программистов и 1616 роботов. Сейчас ищут 652 программиста ...

Кешировать результат запроса

Тема в разделе "MySQL", создана пользователем joost, 24 сен 2009.

  1. joost

    joost Guest

    Есть запрос, результат которого может менятся максимум раз в месяц.
    Как закешировать результат запроса?
    Сам запрос используется приложениями очень часто.
    Выполняется запрос несколько сек. (1-5 сек. в зависимости от нагрузки сервера)
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    положи в мемкеш
     
  3. joost

    joost Guest

    обясни, плиз, подробней!
     
  4. kostyl

    kostyl Guest

    не кислый запросик!!! Может для начала оптимизировать его, ну если конечно это реально. Ну а потом положить в мемкеш. Еще попробуй результат залить в файл, иногда тоже помогает, особенно когда нет мемкеша.
     
  5. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    joost
    а можно превратить результат запроса в php array и сохранить в файл. сам файл инклюдить :D
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    $key = 'sql1';
    $res = $memcache->get($key);
    if($key === false) {
    $res = $db->queryobjects('SELECT...');
    $memcache->set($key,$res,(время в секундах))
    }

    далее рабоатаем с $res как ни в чем не ьбывало
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    можно, но не нужно
     
  8. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    440Hz
    мемкэш не везде стоит
     
  9. joost

    joost Guest

    как долго будет жить $res ?
    надо чтобы результат "жил" от первого запуска запроса до перезагрузки и сервера, после перезагрузки также от первого запуска до новой перезагрузки - другими словами всегда был в памяти или что-то типа того
     
  10. joost

    joost Guest

    мемкэш - это тотже файл с результатом, только создан мускулом?
     
  11. kostyl

    kostyl Guest

    мемкешь это типа демона, сохраняющий данные в ОЗУ, тобишь работает от перезагрузки до перезагрузки. Он должен специально устанавливаться на сервере.
     
  12. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    это кусок в памяти, где можно хранить что угодно и оно доступно всем выполняющимся скриптам
     
  13. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    тут больше лучше подойдет обычный файловый кеш.

    Код (Text):
    1. file_put_contents($filePath, serialize($queryResult));
    2. и
    3. $queryResult = unserialize(file_get_contents($filePath))
     
  14. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    TheShock
    serizlize/unserialize - жутко тормозные функции
    моя идея красивее и на порядок быстрее :)
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    можно еще в шаред мемори выгрузить. то ж ниче...
    а файлы - вчерашний день, ИМХО
     
  16. kostyl

    kostyl Guest

    хрена с два, она красивее, ИМХО
    ну это смотря у кого какие возможности )))
     
  17. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    почему? :)
     
  18. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    для всего есть свои цели. иногда — лучше файлы. если достаточно масивная выборка, то зачем грузить так сильно мемкеш тем, что можно вполне хранить в файле?
     
  19. kostyl

    kostyl Guest

    потому что на вкус и цвет товарищей нет...
     
  20. joost

    joost Guest

    и каждый раз грузить в оперативку с файла
    лучше сразу в мемкеше держать, имхо
     
  21. kostyl

    kostyl Guest

    joost
    dont tupit'!
    если есть мемкеш файлы не нужны
     
  22. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    мне больше нравится, что на вкус и цвет фломастеры разные :)
     
  23. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    не правда, есть спектр цветов, но большинство фломастеров не разные, а похожи по цвету на другой фломастер (например красные, или зеленые).
    более того, на мой субъективный вкус — все фломастеры одинаковые. Различия совершенно незначительный и, по моему мнению, связанные со сторонними факторами, такими, как: настроение, уровень сытости и уровень загрязнённости фломастера.
     
  24. kostyl

    kostyl Guest

    это точно, а вот символы, которые рисуются фломастерами могут быть разного цвета!
    Причем даже когда рисуешь одним фломастером. Это очень напрягало в детстве.
    Это типа не в мемкеш? Это как?
     
  25. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Может просто мускулу дать достаточно памяти на query cache?