Rumah > pangkalan data > tutorial mysql > Menggunakan kunci untuk kawalan konkurensi dalam DBMS

Menggunakan kunci untuk kawalan konkurensi dalam DBMS

王林
Lepaskan: 2023-09-02 13:57:02
ke hadapan
907 orang telah melayarinya

在 DBMS 中使用锁进行并发控制

Kunci adalah bahagian penting dalam mengekalkan kawalan serentak dalam DBMS. Transaksi dalam mana-mana sistem yang melaksanakan kawalan konkurensi berasaskan kunci tidak boleh membaca atau menulis penyata sehingga mereka memperoleh kunci yang diperlukan.

Terdapat dua jenis kunci dalam protokol berasaskan kunci. Ia adalah:

  • Kunci Perduaan - Ia hanya boleh berada dalam satu daripada dua keadaan, berkunci atau tidak berkunci.
  • Kunci Dikongsi/Eksklusif - Peroleh kunci kongsi hanya apabila melakukan operasi baca. Kunci yang dikongsi boleh dikongsi antara berbilang transaksi kerana tiada data diubah. Gunakan kunci eksklusif semasa melakukan operasi tulis. Hanya transaksi yang memegang kunci eksklusif dibenarkan untuk menukar nilai data.

Protokol penguncian yang berbeza ialah -

Protokol penguncian mudah

Transaksi memperoleh kunci pada nilai data sebelum melakukan operasi tulis. Selepas operasi tulis selesai, kunci boleh dilepaskan. Contoh protokol penguncian mudah ialah:

T1 T2
R(A)

Kunci( B )

R(B)

W(B)

Kunci (C)

R (C)

W(C)

Serah

Komit

Dua transaksi T1 dan T2 ditunjukkan di atas. Operasi baca tidak memerlukan kunci, tetapi setiap transaksi memperoleh kunci sebelum operasi tulis dan melepaskan kunci selepas itu.

Protokol Penguncian Dua FasaProtokol penguncian dua fasa mempunyai dua fasa iaitu fasa pertumbuhan dan fasa penguncupan. Transaksi boleh memperoleh kunci hanya semasa fasa pertumbuhan. Apabila memasuki fasa pengecutan, ia boleh melepaskan kunci yang diperoleh sebelum ini, tetapi tidak boleh memperoleh kunci baharu. Kunci eksklusif diwakili oleh X dan kunci kongsi diwakili oleh S. Contoh protokol penguncian dua fasa ialah - T1T2 tr>Buka Kunci (C )Buka Kunci (A)Buka Kunci (B)Dalam contoh di atas, T1 dan T2 berkongsi kunci menggunakan pembolehubah kongsi A kerana hanya operasi baca dilakukan pada A. T1 memperoleh kunci eksklusif pada B untuk operasi tulis dan melepaskannya tidak lama kemudian. T2 melakukan perkara yang sama seperti C. Protokol penguncian dua fasa yang ketatT1S(A)

S(A)

.

Serah

Komit

Protokol penguncian dua fasa yang ketat adalah serupa dengan protokol penguncian dua fasa. Satu-satunya perbezaan ialah dalam protokol 2PL yang ketat, semua kunci eksklusif yang diperoleh oleh protokol perlu dikekalkan sehingga protokol itu dilakukan atau dibatalkan. Contoh protokol penguncian dua peringkat yang ketat ialah:

T2

S(A)

R(A) tr>

Dalam contoh di atas, T1 dan T2 berkongsi pembolehubah A menggunakan kunci kongsi, kerana hanya operasi baca dilakukan pada A. T1 memperoleh kunci eksklusif pada B untuk operasi tulis, dan T2 memperoleh kunci eksklusif pada C. Kunci eksklusif dilepaskan hanya selepas transaksi dilakukan. Walau bagaimanapun, kunci kongsi tidak mempunyai sekatan sedemikian.

Protokol Penguncian Dua Fasa Ketat

Protokol Penguncian Dua Fasa Ketat hanyalah lanjutan daripada Protokol Penguncian Dua Fasa dan Protokol Penguncian Dua Fasa Ketat. Kunci protokol. Di sini, semua kunci yang dipegang oleh urus niaga, sama ada dikongsi atau eksklusif, dikeluarkan hanya apabila urus niaga itu dilakukan atau dibatalkan. Contoh protokol penguncian dua peringkat yang ketat ialah:

X(B)

W (B)

W(C)

Buka Kunci( A)

Serah Buka kunci (B)

tr>Dalam contoh di atas, T1 dan T2 menggunakan kunci kongsi untuk berkongsi pembolehubah A kerana hanya operasi baca dilakukan pada perolehan A. T1 kunci eksklusif pada B untuk operasi tulis, dan T2 pada C Lakukan perkara yang sama pada . Kedua-dua kunci kongsi dan kunci eksklusif hanya akan dikeluarkan selepas transaksi dilakukan.
T1 T2
S(A)

S(A)

R(A)

W(C)

Serah

Buka Kunci(A)

Buka Kunci(B)

Serah

Buka Kunci (A)

Buka Kunci(C)

Atas ialah kandungan terperinci Menggunakan kunci untuk kawalan konkurensi dalam DBMS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan