Правильно сказал Breaze, кешировать нужно результат, и то в случае, если уперся в производительность СУБД.Камрады, когда пишите свое имхо, аргументируйте хотя бы.
Обратился к нам хороший человек, мол помогите, уволили директора IT а на сайте какая-то херня, какие-то новости на языке незалежной.... В общем, ковырялся у нас сотрудник с говнокодом с комментами типа "азазаза, бля, опасно". Контент удаляем с админки, а он как был так и осталось. Выяснилось что это млять кеширование SQL запросов. Идиоты.Вот сколько уже было сказано о том, что это неправильно, так не делают, инвалидация, и прочие умные слова.
Но правильное и конкретное решение почему-то так никто и не изложил, ни в виде кода, ни в виде ссылки на статью или библиотеку
А мы тут что по-твоему обсуждаем? Как хранить сам текст запроса?)Правильно сказал Breaze, кешировать нужно результат
А это вот ты к чему написал? Пример как можно реализовать кеширование через жопу? ОК, принимается в копилку говнокода.Обратился к нам хороший человек, мол помогите, уволили директора IT а на сайте какая-то херня, какие-то новости на языке незалежной.... В общем, ковырялся у нас сотрудник с говнокодом с комментами типа "азазаза, бля, опасно". Контент удаляем с админки, а он как был так и осталось. Выяснилось что это млять кеширование SQL запросов. Идиоты.
Причем хранят они в виде md5 сумм SQL запроса. Идиоты. Как они его будут удалять из кеша я ХЗ.
Причем нужно понимать что СУБД работает с ОЗУ, и зачастую таблицы лежат полностью в памяти, и проще сделать SQL запрос, а не обращаться к ФС, зачастую файловая система является самым узким местом на сервере.
Вот у меня под рукой таблица news, в ней 543780 строк на текущий момент. Она прям вся в памяти?Причем нужно понимать что СУБД работает с ОЗУ
Ну да, расскажи мне как кеш в MySql работает, а то я же не в курсе.Она нет, но последние запросы, которые ты к ней делал - да.
<?php
Cache::init('filesystem');$sql = "SELECT * FROM users";
if (!Cache::hasKey(md5($sql))) {$data = DB::query($sql)->fetchAssoc();Cache::set(md5($sql), $data, 600)); // последний параметр это ttl - время жизни кеша} else {$data = Cache::get(md5($sql));
}var_dump($data);
Конечно, если оттюнингван MySQL. 543780 херня.Вот у меня под рукой таблица news, в ней 543780 строк на текущий момент. Она прям вся в памяти?
Как сказал я, первый мой пост в треде. И разговора о кешировании чего-то там не было, был вопрос кешировать результат. Надеюсь это автор понимает.Правильно сказал Breaze, кешировать нужно результат, и то в случае, если уперся в производительность СУБД.
1. У кеша есть время жизни, которое передается 3-м параметром, если не передано, используется дефолтное значение например 10 минутБудете удалять кеш при необходимости?
Забей, дело не в тебе и не в твоем посте. Просто я "Новичок" с количеством сообщений 57, поэтому любое мое мнение по определению неправильное и его обязательно нужно оспорить.Ох, не ожидал что на мой пост у вас будет такая реакция. Я вообще за мир, а тут люди ссорятся друг с другом.