Back to Home

DataBase System

Lesson123456791012131415

Lesson 11 : Recovery and Concurrency Control



Lesson Plan
Section No.
Section 1
Section 2
Test
PDF file
PPT File


<<Prev pageCourse MapNext page>>

Print content of this page
Save content of this page

 

ประเภทและระดับของการล็อค

1.ประเภทของการล็อก

ประเภทของการล็อก (Type of Locking) จะมีอยู่ 2 ประเภท คือ การล็อกแบบแบ่งส่วน (Shared Locks) และการล็อกแบบผูกขาด (Exclusive Locks)

1.1เอ็กคลูซีฟล็อก (exclusive lock) คือการกำหนดสถานะของข้อมูลให้เป็นล็อกโดยไม่ให้ทรานแซกชันอื่นใช้ข้อมูลที่ถูกล็อกนั้น เป็นการล็อกที่ผู้ใช้ล็อกแบบนี้จะเป็นผู้เดียวที่สามารถเปลี่ยนแปลงข้อมูลที่ล็อกไว้ได้ผู้เดียว ผู้ใช้คนอื่น ๆ จะไม่สามารถอ่านหรือแก้ไขระเบียนนั้นได้เลย จนกว่าจะมีการปล่อยล็อก การกำหนดให้ข้อมูลนั้นเป็นเอ็กคลูซีฟล็อก (exclusive lock) ได้จะเป็นกรณีที่ทรานแซกชันนั้นต้องการเปลี่ยนแปลงแก้ไขหรือบันทึกข้อมูล ซึ่งสามารถกำหนดในภาษาเอสคิวแอล ด้วยคำสั่ง “WRITE_LOCK” เพื่อไม่ให้ทรานแซกชันอื่นใช้ข้อมูลนั้นจนกว่าจะบันทึกเสร็จ ดังนั้นเมื่อทรานแซกชันใช้งานข้อมูลนั้นเสร็จแล้ว ควรจะใช้คำสั่ง “UNCLOCK” เพื่อให้ทรานแซกชันอื่นเรียกใช้ข้อมูลนั้นได้

1.2 แชร์ล็อก (share lock) คือ การกำหนดสถานะของข้อมูลให้ใช้งานร่วมกันกับทรานแซกชันอื่นได้ เช่น คำสั่ง “READ” จะมีการกำหนดสถานะของข้อมูลให้เป็น “share_lock” โดยอัตโนมัติ เนื่องจากการอ่านข้อมูลไม่มีผลทำให้เกิดการเปลี่ยนแปลงข้อมูล ซึ่งไม่ก่อให้เกิดปัญหาตามมาได้ จึงสามารถจะแชร์ล็อกเพื่อใช้งานร่วมกันระหว่างหลายๆ ทรานแซกชันได้

2.ข้อกำหนดของการล็อก

ข้อกำหนดของการล็อกทั้ง 2 ประเภท คือ

2.1ถ้าทรานแซกชัน ก. ทำการล็อกระเบียนแบบ S อยู่ดังนั้น

ถ้ามีทรานแซกชัน A ทำการล็อกระเบียนแบบแบ่งส่วน (Shared Bocks) จะสามารถล็อกระเบียนร่วมกันกับทรานแซกชัน A ได้เพื่อทำการอ่านข้อมูลนั้นอย่างเดียว

แต่ถ้ากับทรานแซกชัน B จะขอล็อกระเบียนนั้นแบบผูกขาด (Exclusive Locks) เพื่อปรับปรุงข้อมูลทรานแซกชัน B. จะทำการล็อกไม่ได้ จนกว่าทรานแซกชัน A. จะปล่อยล็อก

2.2 ถ้าทรานแซกชัน A ทำการล็อกระเบียนแบบผูกขาดอยู่ ดังนั้นทรานแซกชัน B จะไม่สามารถทำการล็อกระเบียนนั้นได้เลย ไม่ว่าจะเป็นการขอล็อกแบบแบ่งส่วน (Shared Locks) หรือแบบผูกขาดก็ตาม จะต้องรอให้ทรานแซกชันA ปล่อยล็อกอย่างเดียว

ตารางที่ 11.8 แสดงสถานะภาพของการล็อก

สถานะภาพของการล็อกของทรานแซกชัน B

ตัวอย่าง การทำงานร่วมกันระหว่าง เอ็กคลูซีฟล็อก (exclusive lock) และแชร์ล็อก (sharelock)

การล็อกนั้นจะสามารถใช้แก้ปัญหาของการสูญเสียผลของการแก้ไขได้ แต่ การล็อกก็สามารถนำไปสู่ปัญหาอื่นได้อีก ได้แก่ ล็อกค้าง (deadlock)

3.การแบ่งระดับการล็อก

การแบ่งระดับการล็อก (Locking Level) ในการควบคุมภาวะการเข้าถึงข้อมูลพร้อมกัน โดยการใช้การล็อกนี้จะสามารถเลือกรูปแบบของการล็อกข้อมูลได้หลายระดับ ตามลักษณะของงานนั้น ซึ่งสามารถแบ่งระดับของการล็อกนี้เป็นระดับต่าง ๆ ดังนี้

3.1การล็อกฐานข้อมูลทั้งฐาน (entire database) เป็นการล็อกทั้งฐานข้อมูลขณะที่ทรานแซกชันใดทรานแซกชันหนึ่งกำลังใช้งานมักจะเป็นกรณีที่มีการประมวลผลแบบแบตซ์ ( batch processing) แต่ไม่เหมาะสำหรับการประมวลผลแบบออนไลน์ ฐานข้อมูลทั้งหมดจะถูกล็อก โดยผู้บริหารฐานข้อมูล (DBA) ดังนั้นผู้ใช้คนอื่น ๆ จะไม่สามารถใช้ฐานข้อมูลนั้นได้เลย จนกว่าจะมีการปล่อยล็อก การล็อกแบบนี้จะล็อกในระหว่างที่มีการสำรอง (Backup) ฐานข้อมูลทั้งหมดนั้นขึ้นเทป

3.2การล็อกเฉพาะตารางใดตารางหนึ่งในฐานข้อมูล (a relation) การล็อกตารางเป็นการล็อกตารางข้อมูลที่ต้องการซึ่งระเบียนต่างๆที่อยู่ในตารางนั้นจะถูกล็อกด้วยโดยอัตโนมัติ ผู้ใช้คนอื่นจะไม่สามารถใช้ข้อมูลใดที่อยู่ในตารางที่ถูกล็อกนี้ได้เลย จนกว่าจะมีการปล่อยล็อก การล็อกตารางจะถูกทำในกรณีที่จะมีการปรับปรุงหรือแก้ไขข้อมูลทั้งหมดในตารางนั้น ๆ

3.3การล็อกเฉพาะแถวบางแถว (a tuple) ในฐานข้อมูลการล็อกแถวข้อมูลเป็นการล็อกเฉพาะระเบียนหรือแถวข้อมูลใด ๆ ในตาราง ซึ่งผู้ใช้คนอื่นจะไม่สามารถแก้ไขหรือปรับปรุงระเบียนที่ถูกล็อกนี้ได้จนกว่าจะมีการปล่อนล็อก การล็อกระเบียนจะถูกใช้มากในการเขียนโปรแกรมที่ใช้ในการปรับปรุงระเบียนใดระเบียนหนึ่งในตาราง การล็อกระเบียนเป็นการห้ามไม่ให้ผู้อื่นเข้าถึงข้อมูลที่ถูกล็อกนี้ได้ ไม่ว่าจะเป็นการดูข้อมูลหรือการแก้ไขข้อมูล

3.4การล็อกเฉพาะบางฟิลด์ (field) หรือบางแอตทริบิวต์ (attribute) ในฐานข้อมูลเท่านั้น การล็อกเฉพาะบางฟิลด์เป็นการล็อกเฉพาะเขตข้อมูลใดๆในระเบียนที่ต้องการของตาราง การล็อกในระดับนี้จะใช้ในกรณีที่มีการแก้ไขข้อมูลในเขตข้อมูลที่ทำการล็อกนั้นบ่อย ๆ ตัวอย่างเช่น ตารางสินค้าคงคลัง มีเขตข้อมูลปริมาณสินค้าที่อยู่ในมือที่จะถูกเปลี่ยนแปลงค่าข้อมูลบ่อยมาก ในขณะที่ข้อมูลในเขตข้อมูลอื่น เช่น รหัสสินค้า ชื่อสินค้า แทบจะไม่มีการเปลี่ยนแปลงเลย ดังนั้น ในการทำงานก็อาจมีการล็อกเฉพาะเขตข้อมูลปริมาณสินค้าที่มีอยู่ในมือเท่านั้น แต่ส่วนใหญ่แล้วการล็อกในระดับนี้จะใช้น้อยมาก

 

 

Last Updated: 12/13/2001 11:20:37 AM
© โครงการเครือข่ายสารสนเทศเพื่อพัฒนาการศึกษา ทบวงมหาวิทยาลัย