Извлечение записей из базы данных - PullRequest
2 голосов
/ 22 декабря 2010

В моем приложении C # 3.5 код выполняет следующие шаги:

1.Произвести коллекцию [длиной 10]

2.Для каждого элемента на шаге 1 извлекайте записи из базы данных Oracle, выполняя сохраненный процесс [здесь, количество записей обычно составляет 100]

3.Процессы, выбранные на шаге 2.

4. Перейдите к следующему пункту в шаге 1.

Мой вопрос, касающийся производительности, является ли хорошей идеей получить все элементы на шаге № 2 [т.е. 10 * 100 = 1000 записей] в одном кадре вместо подключения к базе данных на каждом шаге и получения 10 записей?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 22 декабря 2010

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

2 голосов
/ 23 декабря 2010

В зависимости от того, насколько интенсивны шаги подключения, может быть лучше получить все записи одновременно.Однако имейте в виду, что преждевременная оптимизация является корнем всего зла.: -)

1 голос
/ 23 декабря 2010

Как правило, лучше извлечь все записи из базы данных за один вызов хранимой процедуры.

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

0 голосов
/ 23 декабря 2010

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

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

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

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