Protokol Penguncian

Salah satu cara untuk menjamin terjadi serialisasi adalah dengan menerapkan protokol penguncian (locking protocol) pada tiap data yang akan diakses. Ada dua macam cara untuk melakukan penguncian pada data:

  1. SharedJika sebuah transaksi Ti melakukan shared-mode lock pada data Q, maka transaksi tersebut dapat melakukan operasi read pada Q tetapi tidak dapat melakukan operasi write pada Q.

  2. ExclusiveJika sebuah transaksi Ti melakukan exclusive-mode lock pada data Q, maka transaksi tersebut dapat melakukan read dan write pada Q.

Setiap transaksi harus melakukan penguncian pada data yang akan diakses, bergantung pada kebutuhan operasi yang akan dilakukan. Proses pengaksesan data Q sebuah transaksi Ti adalah sebagai berikut:

  1. Menentukan mode penguncian yang akan dipergunakan

  2. Memeriksa apakah data Q sedang dikunci oleh transaksi lain. Jika tidak, Ti dapat langsung mengakses Q, jika ya, Ti harus menunggu (wait).

  3. Bila mode penguncian yang diinginkan adalah exclusive-lock mode, maka Ti harus menunggu sampai data Q dibebaskan.

  4. Bila mode penguncian yang diinginkan adalah shared-lock mode, maka Ti harus menunggu sampai data Q tidak berada dalam exclusive-mode lock oleh data lain. Dalam hal ini data Q bisa diakses bila sedang dalam keadaan bebas atau shared-mode lock.

Sebuah transaksi dapat melakukan pembebasan (unlock) pada suatu data yang telah dikunci sebelumnya setelah data tersebut selesai diakses. Namun, proses pembebasan data tidak langsung dilakukan sesegera mungkin karena sifat serializable bisa tidak terjaga. Oleh karena itu, ada pengembangan lebih lanjut dari protokol penguncian yang disebut two-phase locking protocol. Protokol ini terdiri dari dua fase, yaitu:

  1. Growing phaseFase dimana sebuah transaksi hanya boleh melakukan penguncian pada data. Pada fase ini, transaksi tidak boleh melakukan pembebasan pada data lain.

  2. Shrinking phaseFase dimana sebuah transaksi melakukan pembebasan pada data. Pada fase ini, transaksi tidak boleh melakukan penguncian pada data lain.

Gambar 21.1. Two-Phase Locking Protocol

Two-Phase Locking Protocol

Pada banyak kasus, two-phase locking protocol banyak dipergunakan untuk menjaga sifat serializable dari suatu penjadwalan, namun protokol ini belum dapat menjamin bahwa tidak akan terjadi deadlock karena masih ada transaksi yang berada dalam status menunggu ( wait()).