Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konkurensi adalah kemampuan dua transaksi untuk menggunakan data yang sama secara bersamaan, dan dengan peningkatan isolasi transaksi biasanya berkurang konkurensinya. Ini karena isolasi transaksi biasanya diimplementasikan dengan mengunci baris, dan karena lebih banyak baris terkunci, lebih sedikit transaksi yang dapat diselesaikan tanpa diblokir setidaknya untuk sementara oleh baris terkunci. Meskipun keserentakan yang berkurang umumnya diterima sebagai kompromi untuk mencapai tingkat isolasi transaksi yang lebih tinggi yang diperlukan untuk menjaga integritas database, hal ini dapat menjadi masalah dalam aplikasi interaktif yang memiliki tingkat aktivitas baca/tulis yang tinggi dan menggunakan kursor.
Misalnya, aplikasi menjalankan pernyataan SQL SELECT * FROM Orders. Ini memanggil SQLFetchScroll untuk menggulir di sekitar kumpulan hasil dan memungkinkan pengguna untuk memperbarui, menghapus, atau menyisipkan pesanan. Setelah pengguna memperbarui, menghapus, atau menyisipkan pesanan, aplikasi melakukan transaksi.
Jika tingkat isolasi adalah Repeatable Read, transaksi mungkin - bergantung pada implementasinya - mengunci setiap baris yang dikembalikan oleh SQLFetchScroll. Jika tingkat isolasi adalah Serializable, transaksi mungkin mengunci seluruh tabel Pesanan. Dalam kedua kasus, transaksi melepaskan kuncinya hanya ketika dikomit atau dibatalkan. Jadi jika pengguna menghabiskan banyak waktu membaca pesanan dan sangat sedikit waktu memperbarui, menghapus, atau memasukkannya, transaksi dapat dengan mudah mengunci sejumlah besar baris, membuatnya tidak tersedia untuk pengguna lain.
Ini adalah masalah bahkan jika kursor bersifat baca-saja dan aplikasi memungkinkan pengguna untuk membaca hanya pesanan yang ada. Dalam hal ini, aplikasi melakukan transaksi, dan melepaskan kunci, ketika memanggil SQLCloseCursor (dalam mode penerapan otomatis) atau SQLEndTran (dalam mode penerapan manual).
Bagian ini berisi topik berikut.