Ну вот собственно сабж. Категорий не много, порядка 200, однако каждая имеет текста на 5кб (описания, названия, различные пометки и прочее). Сильно накладно будет катать такой блоб туда сюда постоянно? (речь о сериализации массива кеширующим сервером)
Или может намекнете как оптимальнее сделать это. А может вообще копию таблицы держать в мемори тейбл. Какой тогда в таком случае запрос делать, если такой таблицы нет? (после перезагрузки сервера, например) В общем просвятите, гуру оптимизации.
Алексей Уколов: Сейчас ситуация удручающая. Некто умный до меня сделал через список айдишников в таблице поста вот так:
post_id | categories
1 | 2,3,5
соответственно запросы на выборку постов в конкретной категории делаются через мускульный regex и занимают порядка 0.8секунды. Так что оптимизация далеко не преждевременная все самое время сделать по уму.
AlikDex: ну так опишите задачу нормально, что вы собрались кешировать, как, зачем, какие блобы вы собираетесь катать откуда и куда? Вы даже стек технологий не указали.
Алексей Уколов: без разницы какой стек. Дерево категории всегда одинаково выглядит, не смотря на способ хранения в базе. В моем случае это будет adjacency list. Собственно, чтобы исключить постоянные запросы в мускул для полного списка категорий, его ведь можно закешировать? Вот в этом и вопрос.
Да, для того, чтобы не пинать базу можно закешировать данные. Но для того чтобы ответить на вопрос имеет ли смысл это делать, нужно больше информации. Скорее всего, разумнее будет денормализовать БД.
смысл кеширования в том, чтобы сократить обращения к диску. в случае с файлом это не подходит (как и постоянные обращения к базе, по сути индекс будет только праймори - id). Но если использовать мемкеш, учитывая почти мегабайтный массив и его постоянную десериализацию самим мемкешем... тут тоже могут быть свои нюансы. Был печальный опыт загрузки 2процессорного сервера с 16 ядрами на постоянные 100% именно по этой причине )) Отсюда и вопросы. как лучше сделать.
AlikDex: взять готовый файл с диска который автоматом закеширует файловая система в линуксе очен дешево , на порядок дешевле чем забирать из базы, даже если оно там кешнется.