За последние 24 часа нас посетили 61110 программистов и 1744 робота. Сейчас ищут 1096 программистов ...

кеширование изменений в таблице

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 11 мар 2015.

  1. vikrorpert

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

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть таблица mysql, например 10-20 записей. к ней будут часто обращаться с выборкой
    код примерно такой

    Код (Text):
    1. $model=Model::findbypk($id, 'еще условия');
    2. $model->last_access=time();
    3. $model->save(false);
    возникла идея закешировать всю таблицу в память,делать изменения в память, и раз в пару минут сбрасывать записи в физическую таблицу
    насколько эта идея имеет смысл? есть штатные средства для этого, или лучше не париться с этим?
    про nosql хранилища знаю, типа редис, но думаю что на начальном этапе смысла в редисе нету
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Есть штатные средства — сам сервер БД. Он пытается кешировать, надо только ему помочь.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это немного рознится с понятием "выборка". Это уже не кеширование, а виртуальная БД. Я подобный механизм когда-то давно написал для sqLite под C#, потому что найти нечто подобное не смог в свое время, а оно было нужно. И вряд ли есть готовые решения под PHP. Виртуальные хранилища с возможностью синхронизации - это крайне нишевые решения.

    Проще, имхо, использовать какой-либо nosql-меморишардер и потом, раз в N времени, пробегаться по нему ручками и "прожигать" в базу по определенным правилам.
     
  4. vikrorpert

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

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    наверно проще сделать обычную выборку а дальше смотреть нагрузку
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Внимание вопрос - а в чем причина этого решения? У вас сервер не справляется? Загрузка проца 99%? Оперативка выедается?
    В таком случае есть проверенная связка mySQL(или любая другая БД) + memcache. Целый фейсбук на ней работает, например. Не падает вроде.

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

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

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    вопрос пока чисто теоретический
    проекта еще нет

    Добавлено спустя 1 минуту 1 секунду:
    стало интересно как такое сделать без редиса
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Использовать memcache или аналогичный интерфейс у xCache. Мне второй больше нравится, но это вкусовщина.

    В противном случае вы тратите время на борьбу с ветряными мельницами...