Должен ли я ограничить количество подключаемых к моей базе данных? - PullRequest
2 голосов
/ 14 ноября 2011

Я сейчас работаю над приложением CakePHP и пишу несколько правил проверки для одной из моделей.

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

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

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

Есть ли какое-то ограничение, которое я должен применять, или накладные расходы довольно минимальны?

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 ноября 2011

проверьте, правильно ли разработана ваша база данных.С ограниченным объемом информации, которую вы предоставили, трудно судить, действительно ли вам нужно пройти через все таблицы или нет.Но, как правило, вам не нужно это делать.

Кроме того, попадание в базу данных без необходимости не является хорошей идеей.Все зависит от вашего приложения.Если вам действительно не нужно приложение с очень высокой производительностью, вы можете быть в порядке.Затраты на чтение не будут такими большими, поскольку база данных будет выполнять некоторое кэширование памяти.Пишет всегда будет дороже.Особенно, если у вас есть ограничения внешнего ключа.Поскольку БД проверит правильность записи.

Лучший способ - написать тест, который попытается записать записи "x" в базу данных через вашу логику и рассчитать время.Это даст вам указание, если это действительно проблема вообще.

0 голосов
/ 14 ноября 2011

Преждевременная оптимизация - корень всего зла.

Разверните свое приложение. Как только реальные люди используют его для реальных целей, вы можете сделать тесты, чтобы увидеть, где вам действительно нужно оптимизировать.

0 голосов
/ 14 ноября 2011

Если вы установили соединения по уважительной причине (и проверки там довольно высоки), тогда было бы нормально подключиться так, как вам нужно. Однако нельзя ли объединить эти проверки? Вы используете хранимые процедуры? Если вы это сделаете, то будет возможно собрать пакет проверок в одну хранимую процедуру. Это почти то же самое, что сказать «запустить как можно больше правил валидации за один раз», а затем ожидать нескольких наборов результатов (если это необходимо - и в некоторых случаях это было бы лучше, чем просто возвращать false, если одна валидация не пройдена, но, конечно, это зависит от зависимости этих проверок)

Чтобы сократить мой пост .. Можно ли объединить эти запросы проверки в одну хранимую процедуру?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...