Статьи

Дисковое кэширование запросов

… опубликовано :

Я случайно заметил это в Центре разработчиков ColdFusion в Macromedia. Я думаю, что статья вышла на некоторое время, но я решил опубликовать ссылку здесь для всех, кто заинтересован.

Кэширование запросов к диску или памяти с ColdFusion

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

Допустим, у вас есть 1000 клиентов или пользователей, и вы создаете сложный динамический отчет, так что пользователь 1 входит в систему и просматривает отчет. Там есть что-то вроде (WHERE UserID = # UserID #), чтобы получить отчет для этого пользователя.

Итак, вы можете начать видеть проблему: 1000 пользователей = 1000 сложных отчетов. Если вы кешируете эти отчеты, используя cachedWithin, вы быстро убьете свой сервер.

Дисковый подход может работать лучше, но прежде всего вам все равно придется выполнять каждый запрос хотя бы один раз. Если ваши данные часто меняются, вам нужно будет запускать их один раз каждые x часов, в зависимости от того, как быстро ваши клиенты / пользователи хотят или нуждаются в информации.

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

Ну, это все хорошо, за исключением того, что отчет все еще монстр. Итак, в этой ситуации я использую подход, который хорошо работал раньше: создать отчет за одну таблицу за одну ночь. Затем все, что мне нужно сделать, это запросить одну таблицу и вывести результаты на экран. Построение отчета может быть утомительным. Это потребует хорошего знания СУБД, которую вы используете, и структуры вашей базы данных, но может снизить нагрузку на сервер в течение дня, когда вы загружены.

Во всяком случае, хватит моего болтунья. Я просто решил поделиться этим с вами. Это может значительно облегчить вашу работу для тех из вас, кто имеет дело с чрезвычайно большими системами и объемами данных на регулярной основе.