DBMS - การควบคุมพร้อมกัน
ในสภาพแวดล้อมแบบมัลติโปรแกรมที่สามารถดำเนินการธุรกรรมหลายรายการพร้อมกันได้การควบคุมการทำธุรกรรมพร้อมกันจึงมีความสำคัญอย่างยิ่ง เรามีโปรโตคอลการควบคุมพร้อมกันเพื่อให้แน่ใจว่าอะตอมมิกการแยกและความสามารถในการต่ออนุกรมของธุรกรรมพร้อมกัน โปรโตคอลการควบคุมภาวะพร้อมกันสามารถแบ่งออกเป็นสองประเภทอย่างกว้าง ๆ -
- ล็อคตามโปรโตคอล
- โปรโตคอลตามการประทับเวลา
ล็อคตามโปรโตคอล
ระบบฐานข้อมูลที่ติดตั้งโปรโตคอลแบบล็อกใช้กลไกที่ธุรกรรมใด ๆ ไม่สามารถอ่านหรือเขียนข้อมูลได้จนกว่าจะได้รับการล็อกที่เหมาะสม ล็อคมีสองประเภท -
Binary Locks- การล็อกรายการข้อมูลสามารถอยู่ในสองสถานะ มันถูกล็อคหรือปลดล็อค
Shared/exclusive- กลไกการล็อคประเภทนี้จะแยกความแตกต่างของการล็อกตามการใช้งาน หากได้รับการล็อกบนไอเท็มข้อมูลเพื่อดำเนินการเขียนจะเป็นการล็อกแบบเอกสิทธิ์เฉพาะบุคคล การอนุญาตให้เขียนธุรกรรมมากกว่าหนึ่งรายการบนรายการข้อมูลเดียวกันจะทำให้ฐานข้อมูลอยู่ในสถานะที่ไม่สอดคล้องกัน การล็อกการอ่านถูกแชร์เนื่องจากไม่มีการเปลี่ยนแปลงค่าข้อมูล
มีโปรโตคอลล็อคสี่ประเภทให้เลือก -
Simplistic Lock Protocol
โปรโตคอลที่ใช้การล็อกแบบง่ายช่วยให้ธุรกรรมได้รับการล็อกบนทุกออบเจ็กต์ก่อนที่จะดำเนินการ 'เขียน' ธุรกรรมอาจปลดล็อกรายการข้อมูลหลังจากเสร็จสิ้นการดำเนินการ 'เขียน'
Pre- อ้างสิทธิ์โปรโตคอลล็อค
โปรโตคอลที่อ้างสิทธิ์ล่วงหน้าจะประเมินการดำเนินการและสร้างรายการข้อมูลที่ต้องการล็อก ก่อนที่จะเริ่มดำเนินการธุรกรรมจะร้องขอระบบสำหรับการล็อกทั้งหมดที่ต้องการล่วงหน้า หากได้รับอนุญาตการล็อกทั้งหมดธุรกรรมจะดำเนินการและปลดล็อกทั้งหมดเมื่อการดำเนินการทั้งหมดสิ้นสุดลง หากไม่ได้รับการล็อกทั้งหมดธุรกรรมจะย้อนกลับและรอจนกว่าจะได้รับการล็อกทั้งหมด
สองเฟสล็อค 2PL
โปรโตคอลการล็อกนี้แบ่งขั้นตอนการดำเนินการของธุรกรรมออกเป็นสามส่วน ในส่วนแรกเมื่อธุรกรรมเริ่มดำเนินการจะขออนุญาตสำหรับการล็อกที่ต้องการ ส่วนที่สองคือที่ที่ธุรกรรมได้รับการล็อคทั้งหมด ทันทีที่ธุรกรรมคลายล็อกแรกระยะที่สามจะเริ่มขึ้น ในขั้นตอนนี้ธุรกรรมไม่สามารถเรียกร้องให้มีการล็อกใหม่ได้ มันจะปลดล็อคที่ได้มาเท่านั้น
การล็อคสองเฟสมีสองเฟสคือ growingที่ซึ่งการทำธุรกรรมได้รับการล็อคทั้งหมด และขั้นตอนที่สองจะหดตัวลงซึ่งการล็อกที่ยึดไว้โดยธุรกรรมจะถูกคลายออก
ในการอ้างสิทธิ์การล็อก (เขียน) แบบเอกสิทธิ์เฉพาะบุคคลธุรกรรมจะต้องได้รับการล็อกที่ใช้ร่วมกัน (อ่าน) ก่อนแล้วจึงอัปเกรดเป็นล็อกพิเศษ
การล็อคสองเฟสที่เข้มงวด
ขั้นตอนแรกของ Strict-2PL เหมือนกับ 2PL หลังจากได้รับการล็อกทั้งหมดในระยะแรกธุรกรรมยังคงดำเนินการตามปกติ แต่ตรงกันข้ามกับ 2PL Strict-2PL จะไม่คลายล็อกหลังจากใช้งาน Strict-2PL เก็บล็อคทั้งหมดไว้จนกว่าจะถึงจุดคอมมิตและปลดล็อคทั้งหมดพร้อมกัน
Strict-2PL ไม่มีการยกเลิกแบบเรียงซ้อนเหมือนที่ 2PL ทำ
โปรโตคอลที่ใช้การประทับเวลา
โปรโตคอลการทำงานพร้อมกันที่ใช้บ่อยที่สุดคือโปรโตคอลที่ใช้การประทับเวลา โปรโตคอลนี้ใช้เวลาของระบบหรือตัวนับลอจิคัลเป็นเวลาประทับ
โปรโตคอลแบบล็อกจะจัดการลำดับระหว่างคู่ที่ขัดแย้งกันระหว่างธุรกรรมในขณะดำเนินการในขณะที่โปรโตคอลที่ใช้การประทับเวลาจะเริ่มทำงานทันทีที่มีการสร้างธุรกรรม
ทุกธุรกรรมมีการประทับเวลาที่เกี่ยวข้องและการสั่งซื้อจะถูกกำหนดโดยอายุของธุรกรรม ธุรกรรมที่สร้างขึ้นในเวลา 0002 นาฬิกาจะเก่ากว่าธุรกรรมอื่น ๆ ทั้งหมดที่เกิดขึ้นหลังจากนั้น ตัวอย่างเช่นธุรกรรม 'y' ใด ๆ ที่เข้าสู่ระบบที่ 0004 จะมีอายุน้อยกว่า 2 วินาทีและลำดับความสำคัญจะถูกกำหนดให้กับรายการที่เก่ากว่า
นอกจากนี้ข้อมูลทุกรายการจะได้รับการอ่านและเขียนประทับเวลาล่าสุด สิ่งนี้ช่วยให้ระบบทราบว่าเมื่อใดที่มีการดำเนินการ 'อ่านและเขียน' ครั้งสุดท้ายในรายการข้อมูล
Timestamp Ordering Protocol
โปรโตคอลการจัดลำดับการประทับเวลาช่วยให้มั่นใจได้ถึงความสามารถในการอนุกรมระหว่างธุรกรรมในการดำเนินการอ่านและเขียนที่ขัดแย้งกัน นี่เป็นความรับผิดชอบของระบบโปรโตคอลที่ควรดำเนินการคู่ของงานที่ขัดแย้งกันตามค่าการประทับเวลาของธุรกรรม
- การประทับเวลาของธุรกรรม T iแสดงเป็น TS (T i )
- อ่านการประทับเวลาของรายการข้อมูล X แสดงด้วย R-timestamp (X)
- เขียนการประทับเวลาของรายการข้อมูล X แสดงด้วย W-timestamp (X)
โปรโตคอลการสั่งซื้อเวลาประทับทำงานดังนี้ -
If a transaction Ti issues a read(X) operation −
- ถ้า TS (Ti) <W-timestamp (X)
- การดำเนินการถูกปฏิเสธ
- ถ้า TS (Ti)> = W-timestamp (X)
- ดำเนินการแล้ว
- อัปเดตการประทับเวลารายการข้อมูลทั้งหมดแล้ว
If a transaction Ti issues a write(X) operation −
- ถ้า TS (Ti) <R-timestamp (X)
- การดำเนินการถูกปฏิเสธ
- ถ้า TS (Ti) <W-timestamp (X)
- ปฏิเสธการดำเนินการและ Ti ย้อนกลับ
- มิฉะนั้นการดำเนินการจะดำเนินการ
กฎการเขียนของโทมัส
กฎนี้ระบุว่า TS (Ti) <W-timestamp (X) การดำเนินการจะถูกปฏิเสธและ T iจะถูกย้อนกลับ
กฎการสั่งซื้อการประทับเวลาสามารถแก้ไขได้เพื่อทำให้มุมมองกำหนดการสามารถต่อเนื่องกันได้
แทนที่จะทำให้ T iย้อนกลับการดำเนินการ 'เขียน' จะถูกละเว้น