Что делает ресурсы «дорогими»?

10

Я читаю hibernate, и я натолкнулся на утверждения типа «Соединения JDBC, открытые по нескольким запросам, не очень хорошая вещь, потому что это дорогой ресурс».

Что подразумевается под дорогим ресурсом?

Редактировать: я добавляю то, что пользователь unknown добавил в качестве комментария ниже.

Если установление соединения с базой данных стоит дорого, то почему бы не использовать одно и то же снова и снова (не кэшируя) вместо того, чтобы закрывать его и открывать каждый раз?

Винот Кумар СМ
источник
2
Дорогой означает, что вам будет больно , если вы будете использовать его слишком часто или не так, как указано.
Александр Гесслер

Ответы:

20

Дорогой ресурс это тот, который:

  • Занимает много времени для создания / инициализации. Любое соединение с базой данных может занять до 1-2 секунд для завершения рукопожатия.
  • Использует много памяти. Чтение полной загрузки файла в байтовый массив в памяти перед его сохранением потребует значительного объема памяти в течение короткого периода времени.
  • Использует много циклов процессора. Расчеты по большому набору данных могут обременять ваш процессор, пока он выполняет вычисления.

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

Берин Лорич
источник
Я хотел бы согласиться, но должен отметить, что это противоречит примеру @Sun. Поскольку установка соединения стоит дорого, вы должны держать его открытым.
пользователь неизвестен
2
В этом конкретном случае позвольте мне уточнить: если что-то занимает много времени для создания / инициализации, вы хотите ограничить количество раз, когда вы создаете / инициализируете этот ресурс. Соединения с базой данных не требуют много ресурсов, пока они открыты, поэтому предпочтительно объединить эти ресурсы.
Берин Лорич
5

Это могут быть разные вещи, зависящие от конкретного ресурса. Таким образом, вы можете иметь следующее:

  • Сколько памяти требуется для работы.
  • Время, необходимое для установления соединения.
  • Затраты на поддержание этой связи.

и так далее.

Другие вещи, которые могут сделать что-то дорогое, могут быть, если во время работы требуется доступ к жесткому диску или сети.

ChrisF
источник
2

Дорогой должен иметь префикс «вычислительно». Затраты на вычисления используются для обозначения количества времени или ресурсов (ЦП, памяти, диска, пропускной способности сети), необходимых для выполнения операции, алгоритма или программы.

Энди
источник
2

Стоимость подключения к базе данных зависит от ряда факторов.

  • Соединения с базой данных медленны в настройке и требуют ресурсов на стороне клиента и сервера. Вот почему соединения объединяются.
  • Открытые транзакции имеют накладные расходы, которые требуют управления как клиентом, так и сервером.
  • Открытые транзакции могут блокировать другие обновления. Это замедлит общую производительность.

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

BillThor
источник