Locking (penguncian)

22:15:00 Multimedia Education 0 Comments

Database menangani beberapa operasi bersamaan dengan penguncian. Ini adalah bagaimana konkurensi dan beberapa bentuk dasar integritas dikelola dalam sistem database. kunci tersebut dapat diterapkan pada row level, atau pada level lain seperti page (satu blok data dasar), extent (beberapa array page) atau bahkan seluruh tabel. Hal ini membantu menjaga integritas data dengan memastikan bahwa hanya satu proses pada suatu waktu dapat memodifikasi data yang sama.

Dalam file filesystem atau folder dasar, hanya satu kunci pada suatu waktu yang dapat diatur, membatasi penggunaan untuk satu proses saja. Database, di sisi lain, dapat mengatur dan menahan kunci lebih dari satu pada saat yang sama pada berbagai tingkat struktur data fisik. Skema pengunci mesin database menentukan bagaimana menetapkan dan mempertahankan kunci berdasarkan SQL atau transaksi yang diajukan oleh pengguna. Secara umum, setiap aktivitas pada database harus melibatkan beberapa atau penguncian ekstensif.

Pada tahun 2009 kebanyakan sistem DBMS menggunakan kunci shared dan eksklusif. Kunci eksklusif berarti bahwa tidak ada kunci lain dapat memperoleh  objek data saat ini selama kunci eksklusif berlangsung. DBMS biasanya menetapkan kunci eksklusif ketika database perlu mengubah data, selama operasi UPDATE atau DELETE.

Kunci shared dapat mengambil kepemilikan satu dari yang lain dari struktur data saat ini. Kunci shared biasanya digunakan ketika database membaca data (selama operasi SELECT). Jumlah, sifat kunci dan waktu kunci memegang blok data dapat memiliki dampak besar pada kinerja database. Penguncian buruk dapat mengakibatkan kinerja respon menjadi bencana (biasanya merupakan hasil dari permintaan SQL yang jelek, atau database struktur fisik yang tidak memadai)

Tingkat isolasi dari server data memaksa perilaku penguncian default. Mengubah tingkat isolasi akan mempengaruhi bagaimana kunci shared atau eksklusif harus di-set pada data untuk seluruh sistem database. Default isolasi umumnya 1, dimana data tidak dapat dibaca ketika sedang diubah, melarang kembalinya "ghost data" kepada pengguna akhir.

Pada titik intensif tertentu atau penguncian eksklusif yang tidak tepat dapat menyebabkan situasi "deadlock" antara dua kunci, dimana tidak ada kunci yang bisa dilepas karena mereka mencoba untuk saling mendapatkan sumber daya satu sama lain. Database harus memiliki mekanisme fail-safe yang secara otomatis akan "mengorbankan" salah satu kunci, sehingga melepaskan sumber daya. Proses atau transaksi yang terlibat dalam "deadlock" bisa diputar kembali.

Database juga dapat dikunci karena alasan lain, seperti pembatasan akses untuk tingkat pengguna tertentu. Beberapa DBA juga mengunci basis data untuk pemeliharaan rutin, yang mencegah perubahan yang dilakukan selama pemeliharaan. Namun, banyak database modern yang tidak mengunci basis data selama pemeliharaan rutin. misalnya "Pemeliharaan Database rutin" untuk PostgreSQL.

0 komentar: