Apa yang membuat sumber daya “mahal”?

10

Saya membaca hibernate dan saya menemukan pernyataan seperti "koneksi JDBC terbuka di beberapa permintaan bukanlah hal yang baik karena itu adalah sumber daya yang mahal".

Apa yang dimaksud dengan sumber daya yang mahal?

Sunting: Saya menambahkan apa yang ditambahkan oleh pengguna yang tidak dikenal sebagai komentar di bawah ini.

Jika membuat koneksi database mahal, lalu mengapa tidak menggunakan hal yang sama lagi dan lagi (bukan caching), alih-alih menutupnya dan membukanya setiap saat?

Vinoth Kumar CM
sumber
2
Mahal berarti bahwa itu akan menyakiti Anda jika Anda menggunakannya terlalu sering atau tidak dengan cara yang ditentukan.
Alexander Gessler

Jawaban:

20

Sumber daya yang mahal adalah yang:

  • Butuh waktu lama untuk membuat / menginisialisasi. Koneksi basis data apa saja dapat memakan waktu 1-2 detik untuk menyelesaikan jabat tangan.
  • Menggunakan banyak memori. Membaca file yang diunggah ke dalam array byte di memori sebelum menyimpannya akan menghabiskan banyak memori untuk periode waktu yang singkat.
  • Menggunakan banyak siklus CPU. Perhitungan pada kumpulan besar data dapat membebani CPU Anda saat sedang melakukan perhitungan.

Setiap sumber daya yang mahal dapat memberikan masalah skalabilitas . Singkatnya, Anda tidak dapat memiliki terlalu banyak operasi mahal ini terjadi pada saat yang sama atau Anda tidak akan dapat merespons pengguna Anda dengan cukup cepat.

Berin Loritsch
sumber
Saya suka setuju, tetapi harus menunjukkan, bahwa itu bertentangan dengan contoh yang diberikan @Sun. Karena menyiapkan koneksi mahal, Anda akan membuat koneksi Anda tetap terbuka.
pengguna tidak diketahui
2
Dalam kasus khusus ini izinkan saya mengklarifikasi: Jika sesuatu membutuhkan waktu lama untuk membuat / menginisialisasi Anda ingin membatasi berapa kali Anda membuat / menginisialisasi sumber daya itu. Koneksi basis data tidak membutuhkan banyak sumber daya saat sedang terbuka, jadi lebih baik menyatukan sumber daya ini.
Berin Loritsch
5

Ini dapat berupa berbagai hal tergantung pada sumber daya tertentu. Jadi, Anda mungkin memiliki yang berikut:

  • Berapa banyak memori yang dibutuhkan untuk beroperasi.
  • Waktu yang dibutuhkan untuk membuat koneksi.
  • Overhead dalam mempertahankan koneksi itu.

dan seterusnya.

Hal-hal lain yang dapat membuat sesuatu menjadi mahal adalah jika membutuhkan akses ke hard drive atau jaringan selama operasi dll.

ChrisF
sumber
2

Mahal harus diawali dengan "komputasi". Biaya komputasi digunakan untuk merujuk pada jumlah waktu atau sumber daya (CPU, memori, disk, bandwidth jaringan) yang diperlukan untuk menyelesaikan operasi, algoritma, atau program.

Andy
sumber
2

Biaya koneksi basis data berasal dari sejumlah faktor.

  • Koneksi database lambat untuk setup dan membutuhkan sumber daya di sisi klien dan server. Inilah sebabnya mengapa koneksi dikumpulkan.
  • Transaksi terbuka memiliki overhead yang memerlukan manajemen oleh klien dan server.
  • Transaksi terbuka dapat memblokir pembaruan lainnya. Ini akan memperlambat kinerja secara keseluruhan.

Yang mengatakan, Anda perlu menjaga koneksi (atau setidaknya transaksi) terbuka cukup lama untuk memastikan transaksi Anda melewati tes ACID . (Konsisten Atom Tahan Lama)

BillThor
sumber