#оптимизация #база_данных #архитектура #sql
Проект, над которым я сейчас работаю, организован как некий каркас, который обрастает модулями. Практически каждый модуль - это получение данных из БД или запись в БД. Внутри самого модуля тоже может быть несколько запросов: надо проверить данные, и - в зависимости от результата проверки - что-то записать или изменить. Интересно, какие есть способы, позволяющие уменьшить число запросов к базе. Писать данные в локальное хранилище? сессии? куки? кэширование? хаки в SQL-запросах? Ну и еще: возможно ли такое соотношение одна страница = один запрос к БД? при том, что данные реально разные.
Ответы
Ответ 1
Вы в принципе все способы и перечислили. Основной - кеширование. возможно ли такое соотношение одна страница = один запрос к БД? при том, что данные реально разные. Очень абстрактный вопрос. Он решается на уровне существующего приложения. Судя по вопросам, вы совершаете типичную ошибку начинающего - "оптимизация на спичках". Задумываетесь об оптимизации, еще не зная узких мест приложения.Ответ 2
Как правило, основной принцип оптимизации - это сделать так, чтобы количество запросов не зависело от количества данных. Т.е., не было такого, что у Вас получается большая таблица, обходятся её строки, и при обработке каждой из них делаются мелкие запросы. Если без этого не обойтись, можно, например, строки обрабатывать группами, скажем, по 1000 штук. Обращаю внимание, что речь идёт именно о мелких запросах, для которых обращение к БД более ресурсоёмко, чем собственно выполнение запроса. Модули, по идее - это не данные, их в приложении фиксированное количество. Можете попробовать создать объектную модель запроса, которая будет строиться модулями по кирпичикам (если, конечно, у Вас все запросы от разных модулей для одной операции идут к одной таблице).Ответ 3
Очень хороший вариант — описывать логику приложения (проекта) в СУБД, тогда можно будет избавиться от всяких "конструкторов" и "велосипедов".Ответ 4
Вопрос очень сферический и очень в вакууме. "У меня тут есть что-то с модулями, оно запросы делает, надо оптимизировать". На универсальный вопрос могу ответить только универсальный ответом. Используй кеширование. Где как и что кешировать -- зависит от специфики приложения, про которую неизвестно ничего. Ну и еще: возможно ли такое соотношение одна страница = один запрос к БД? при том, что данные реально разные. Это называется денормализация. Такой подход предлагают многие не-реляционные (NoSQL)базы данных. Естественно это противоречит реляционной модели данных, это несёт некоторые дополнительные риски.
Комментариев нет:
Отправить комментарий