Bagikan melalui


Memahami properti batas waktu di driver JDBC

Unduh driver JDBC

Pengaturan batas waktu di driver JDBC dapat digunakan untuk memprioritaskan respons aplikasi. Secara default, sebagian besar batas waktu driver memprioritaskan menunggu hasil untuk memastikan konsistensi data. Pastikan Anda memilih batas waktu yang sesuai dengan kebutuhan aplikasi Anda.

Untuk koneksi awal, loginTimeout digunakan:

  • loginTimeout adalah jumlah waktu, dalam hitungan detik, driver menunggu untuk membuat koneksi ke server. Jika jumlah ini terlampaui, kesalahan dikembalikan, dan tidak ada koneksi terbuka yang dibuat. Nilai nol menunjukkan bahwa batas waktu adalah batas waktu sistem default, yaitu 30 detik dalam versi 11.2 ke atas. Untuk versi 10.2 ke bawah, batas waktu default adalah 15 detik. Nilai bukan nol adalah jumlah detik yang harus ditunggu driver sebelum waktu koneksi gagal. Jika Anda secara konsisten mengalami kesulitan membangun koneksi dengan driver JDBC, Anda mungkin perlu meningkatkan batas waktu ini menjadi 90, atau bahkan 120 detik.

Setelah koneksi dibuat, queryTimeout, cancelQueryTimeout, dan lockTimeout digunakan selama eksekusi pernyataan. socketTimeout digunakan untuk komunikasi driver apa pun dengan server.

  • queryTimeout adalah waktu, dalam detik, driver akan menunggu, setelah mengirim perintah eksekusi ke server, untuk menerima balasan dari server dengan data. Jika waktu ini terlampaui, perintah dibatalkan. Melebihi batas waktu ini tidak menutup koneksi. Nilai defaultnya adalah -1, yang berarti batas waktu tak terbatas.
  • cancelQueryTimeout adalah waktu, dalam hitungan detik, driver menunggu pengakuan tentang queryTimeout pembatalan dari server, sebelum menghentikan/menutup koneksi secara paksa. Artinya, driver menunggu jumlah cancelQueryTimeout total plus queryTimeout detik, sebelum koneksi ditutup. Mengatur batas waktu ini ke nilai bukan nol memastikan aplikasi dapat tetap responsif jika ada kegagalan jaringan atau komunikasi dengan server, ketika kueri telah kehabisan waktu. Nilai default untuk properti ini adalah -1, yang merupakan waktu tunggu tak terbatas.
  • lockTimeout adalah jumlah waktu untuk menunggu kunci dibebaskan, dalam kasus di mana ada eksekusi pernyataan pemblokiran kunci. Melebihi batas waktu ini tidak mengakibatkan koneksi tertutup. Nilai default untuk properti ini adalah -1, yang merupakan waktu tunggu tak terbatas.
  • socketTimeout berlaku untuk semua komunikasi soket dengan server. Jika server menghentikan komunikasi dengan driver, baik dengan tidak mengakui atau membalas data, driver menunggu nilai socketTimeout sebelum menutup koneksi. Mengatur batas waktu ini ke nilai bukan nol memastikan aplikasi dapat tetap responsif jika ada kegagalan jaringan atau komunikasi dengan server. Nilai defaultnya adalah 0, yang berarti batas waktu tak terbatas. Pastikan socketTimeout lebih besar daripada queryTimeout untuk menghindari pengecualian batas waktu soket selama jendela queryTimeout . Demikian pula, pastikan socketTimeout lebih besar daripada cancelQueryTimeout untuk menghindari pengecualian batas waktu soket selama jendela cancelQueryTimeout .

Nilai batas waktu yang wajar untuk aplikasi Anda bergantung pada prioritas aplikasi. Mengatur nilai yang lebih rendah untuk batas waktu memprioritaskan respons aplikasi daripada konsistensi data. Ketika batas waktu tercapai, aplikasi perlu memutuskan tindakan terbaik. Keputusan itu didasarkan pada tindakan database yang sedang dilakukan. Misalnya, untuk SELECT pernyataan, keputusannya mungkin melaporkan kesalahan kepada pengguna, atau mungkin untuk menyambungkan kembali dan mencoba kembali. Untuk INSERT pernyataan atau UPDATE , keputusan itu mungkin berbeda.

Untuk aplikasi responsif, loginTimeout dan queryTimeout harus diatur ke nilai yang relatif rendah. Demikian pula, cancelQueryTimeout juga harus diatur ke nilai rendah untuk memastikan driver tidak menunggu terlalu lama agar server mengakui pembatalan kueri, ketika queryTimeout terlampaui. Akhirnya, socketTimeout harus diatur untuk menjaga terhadap driver yang menunggu terlalu lama selama skenario apa pun di mana konektivitas ke server rusak (gangguan jaringan, crash server, dll.).

Ringkasan properti

Properti Deskripsi Default Hasil koneksi
loginTimeout Jumlah detik driver harus menunggu sebelum waktu koneksi gagal. 30 detik [11.2+],
jika tidak, 15 detik
Koneksi tertutup
queryTimeout Jumlah detik untuk menunggu sebelum membatalkan kueri. -1 [Batas waktu tak terbatas] Buka koneksi
cancelQueryTimeout Jumlah detik untuk menunggu pengakuan pembatalan QueryTimeout. -1 [Batas waktu tak terbatas] Koneksi tertutup
lockTimeout Jumlah milidetik untuk menunggu sebelum database mengembalikan kesalahan waktu habis kunci. -1 [Batas waktu tak terbatas] Buka koneksi
socketTimeout Jumlah milidetik untuk menunggu pada soket yang dibaca atau ditulis. Nol [Batas waktu tak terbatas] Koneksi tertutup

Lihat juga

Mengatur properti koneksi