Co sprawia, że ​​zasoby są „drogie”?

10

Czytam hibernację i natrafiłem na takie stwierdzenia, jak: „Połączenia JDBC otwarte dla wielu żądań nie są dobrą rzeczą, ponieważ są drogim zasobem”.

Co rozumie się przez kosztowne zasoby?

Edycja: Dodaję komentarz nieznanego użytkownika jako komentarz poniżej.

Jeśli nawiązywanie połączenia z bazą danych jest drogie, dlaczego nie skorzystać z tej samej opcji bez buforowania, zamiast zamykać i otwierać za każdym razem?

Vinoth Kumar CM
źródło
2
Drogie oznacza, że zaszkodzi ci, jeśli będziesz go używał zbyt często lub nie w określony sposób.
Alexander Gessler

Odpowiedzi:

20

Drogim zasobem jest taki, który:

  • Tworzenie / inicjowanie zajmuje dużo czasu. Każde połączenie z bazą danych może potrwać od 1 do 2 sekund, aby zakończyć uzgadnianie.
  • Zużywa dużo pamięci. Odczytanie całego pliku przesłanego do tablicy bajtów w pamięci przed jego zapisaniem zużywa znaczną ilość pamięci przez krótki czas.
  • Wykorzystuje wiele cykli procesora. Obliczenia dużej kolekcji danych mogą obciążać procesor podczas wykonywania obliczeń.

Każdy z drogich zasobów może powodować problemy ze skalowalnością . Krótko mówiąc, nie możesz mieć zbyt wielu tych kosztownych operacji jednocześnie, lub nie będziesz w stanie wystarczająco szybko odpowiedzieć użytkownikom.

Berin Loritsch
źródło
Lubię się zgodzić, ale muszę zaznaczyć, że jest to sprzeczne z przykładem podanym przez @Sun. Ponieważ ustanowienie połączenia jest drogie, połączenie pozostanie otwarte.
użytkownik nieznany
2
W tym konkretnym przypadku pozwól mi wyjaśnić: jeśli tworzenie / inicjowanie zajmuje dużo czasu, chcesz ograniczyć liczbę operacji tworzenia / inicjowania tego zasobu. Połączenia z bazą danych nie zajmują dużo zasobów, gdy są otwarte, dlatego lepiej jest połączyć te zasoby.
Berin Loritsch,
5

Może to być różne rzeczy zależne od konkretnego zasobu. Więc możesz mieć następujące:

  • Ile pamięci potrzebuje do działania.
  • Czas potrzebny na nawiązanie połączenia.
  • Koszty ogólne utrzymania tego połączenia.

i tak dalej.

Inne rzeczy, które mogą uczynić coś kosztownym, mogą być, jeśli wymaga on dostępu do dysku twardego lub sieci podczas pracy itp.

ChrisF
źródło
2

Drogie należy poprzedzić przedrostkiem „obliczeniowo”. Koszt obliczeniowy odnosi się do ilości czasu lub zasobów (procesor, pamięć, dysk, pasmo sieciowe) wymaganych do wykonania operacji, algorytmu lub programu.

Andy
źródło
2

Koszt połączeń z bazą danych wynika z wielu czynników.

  • Połączenia z bazą danych przebiegają wolno i wymagają zasobów po stronie klienta i serwera. Dlatego połączenia są łączone.
  • Otwarte transakcje mają narzut, który wymaga zarządzania zarówno przez klienta, jak i serwer.
  • Otwarte transakcje mogą blokować inne aktualizacje. Spowolni to ogólną wydajność.

To powiedziawszy, musisz utrzymywać połączenie (lub przynajmniej transakcję) otwarte wystarczająco długo, aby upewnić się, że transakcja pomyślnie przeszła test ACID . (Atomic Consistent Isolated Durable)

BillThor
źródło