![]() |
|
![]() |
|
![]() |
วิธีการควบคุมภาวะความพร้อมกันในการควบคุมภาวะพร้อมกัน ระบบจัดการฐานข้อมูลจะต้องมีกลไกสำหรับจัดเรียงลำดับก่อนหลังการทำงานของแต่ละทรานแซกชัน (scheduler) ซึ่งกลไกดังกล่าวอาจจะใช้วิธีวิธีใดวิธีหนึ่งต่อไปนี้ในการจัดเรียงลำดับทรานแซกชัน ได้แก่ ล็อกกิง (locking), ไทม์แสตมป์ (time stamp) และออปทิมิสทิก (optimistic) เป็นต้น 1.Locking TechniqueLocking Technique เป็นวิธีการกำหนดสถานะของข้อมูลเพื่อให้แต่ละทรานแซกชันที่ต้องการใช้ข้อมูลได้ล็อกข้อมูลนั้นในฐานข้อมูลไม่ให้ทรานแซกชันอื่นเรียกใช้ได้จนกว่าทรานแซกชันที่เรียกใช้ข้อมูลนั้น จะทำงานเสร็จสิ้นสมบูรณ์เสียก่อนแล้วจึงคลายล็อกข้อมูลนั้น ทรานแซกชันอื่นจึงจะใช้ข้อมูลชุดนั้นทำงานได้) ข้อเสียของวิธีล็อกกิงก็คือ การเกิดการล็อกโดยไม่คลายหรือเดดล็อก (deadlock) การล็อก (Looking) การล็อกเป็นกระบวนการอย่างหนึ่งซึ่ง DBMS มีไว้ให้เพื่อใช้ในการควบคุมภาวะการเข้าถึงข้อมูลพร้อมกัน โดยสามารถเขียนโปรแกรมประยุกต์ควบคุมการล็อกขึ้นเอง ถ้าผู้ใช้คนใดต้องการแก้ไข (Update) ข้อมูลนั้นจะถูกล็อกเอาไว้ ผู้ใช้คนอื่นจะถูกปฏิเสธไม่ให้สามารถแก้ไขข้อมูลที่ถูกล็อกไว้แล้วนั้นได้ จนกว่าคนที่ทำการล็อกข้อมูลนั้นจะทำการแก้ไขข้อมูลเสร็จ (หรือยกเลิกการแก้ไข) ก็จะปล่อยล็อกให้ผู้อื่นสามารถแก้ไขข้อมูลนั้นได้ ตัวอย่างในตารางที่11.9 แสดงถึงการล็อกระเบียนบัญชีเงินฝาก A โดยเมื่อ Transaction 1 ทำการถอนเงินออกจากบัญชีนั้นคือต้องการทำการแก้ไขระเบียนบัญชีเงินฝาก A ของ Transaction 1 ดังนั้น โปรแกรมที่เขียนก็จะทำการล็อกระเบียนบัญชีเงินฝาก A ก่อนที่จะมีการอ่านระเบียนนั้นขึ้นมาไว้ในหน่วยความจำหลัก หลังจากนั้น Transaction 1 ก็จะทำการถอนเงิน 200 บาท ยอดเงินคงเหลือก็จะถูกปรับปรุงเป็น 800 บาท ในระหว่างนั้น ถ้า Transaction 2 ทำรายการกับบัญชีเงินฝาก A จะไม่สามารถทำรายการได้ จนกว่ารายการของ Transaction 1 จะทำการปรับปรุงระเบียนบัญชีเงินฝาก A ในฐานข้อมูลจนเสร็จเรียบร้อยและทำการปล่อยล็อก ตารางที่ 11.9 แสดงการล็อกระเบียน
ณ เวลา Time 1 Transaction 1 ต้องการทำรายการสอบถามยอดเงินคงเหลือจากบัญชีเงินฝาก A ดังนั้นโปรแกรมจะทำการล็อกระเบียนบัญชีเงินฝาก A แบบ S ให้เนื่องจากเป็นการอ่านข้อมูลอย่างเดียว และในเวลาไล่เรี่ยกันคือ เวลา Time 2 Transaction 2 ได้ทำรายการสอบถามยอดเงินคงเหลือจากบัญชีเงินฝาก A เช่นกัน ดังนั้น โปรแกรมจะทำการล็อกแบบ S ให้ด้วยที่เวลา Time 3 Transaction 1 ได้ทราบยอดเงินคงเหลือของตน และที่เวลา Time 4 Transaction 1 ต้องการทำรายการถอนเงินต่อไป ซึ่งการถอนเงินนี้จะต้องมีการปรับปรุงยอดเงินคงเหลือ ดังนั้นโปรแกรมจะต้องทำการขอล็อกแบบ X แต่เนื่องจากระเบียนบัญชีเงินฝาก A นี้ได้ถูก Transaction 2 ทำการล็อกแบบ S ไว้อยู่ด้วย ดังนั้น รายการของ Transaction 1 จะต้องรอให้ Transaction 2 ปล่อยล็อกแบบ S นี้ก่อน และเนื่องจากเวลา Time 6 Transaction 2 แสดงความประสงค์จะทำรายการถอนเงินบ้าง ซึ่งก็จะต้องขอล็อกแบบ X ก็จะทำไม่ได้เช่นกัน เนื่องจาก Transaction 1 ได้ล็อกแบบ S อยู่ ดังนั้น แต่ละ Transaction ก็จะทำการรอให้แต่ละ Transaction ทำรายการเสร็จซึ่งจะเป็นการรอแบบไม่รู้จบ ลักษณะเช่นนี้จะทำให้เกิดล็อกค้าง (deadlock) ขึ้น ดังนั้นทั้งสอง Transaction จึงไม่สามารถทำรายการถอนนี้ได้ทั้ง ๆ ที่เงินในบัญชีมีเพียงพอที่จะถอนได้ ตารางที่ 11.10 การควบคุมภาวะพร้อมกันโดยวิธีล็อกกิง
2. Time Stamp TechniqueTime Stamp Technique คือวิธีการควบคุมภาวะความพร้อมกัน โดย ระบบจัดการฐานข้อมูลจะระบุลำดับของแต่ละทรานแซกชันในการเข้าทำงาน ดังนั้นการควบคุมภาวะพร้อมกันโดยวิธีไทม์แสตมป์จะไม่มีปัญหาการเกิดเดดล็อกเหมือนวิธีล็อกกิงการกำหนดค่าไทม์แสตมป์อาจจะทำได้ดังนี้ · การกำหนดตัวแปรเพื่อเก็บค่าไทม์แสตมป์โดยนำค่าของเวลาในระบบเครื่องคอมพิวเตอร์ (system clock) มาเป็นลำดับที่ของทรานแซกชัน โดยทำงานเรียงลำดับการเข้าตามเวลาก่อนหลังของแต่ละทรานแซกชัน · การกำหนดตัวแปรโดยสร้างตัวนับ (counter) ขึ้นเอง ดังนั้นเมื่อมีทรานแซกชันต้องการเรียกใช้ข้อมูลก็จะกำหนดตัวนับให้เพิ่มทีละหนึ่งโดยเรียงลำดับ 1, 2, 3 เพื่อจัดลำดับการทำงานของทรานแซกชัน วิธีนี้จะต้องมีการเซต (reset) ตัวนับให้เป็นศูนย์ หากค่าตัวนับเพิ่มค่าไปจนถึงค่าสูงสุดแล้ว โดยสรุปจะเห็นว่าวิธีการควบคุมภาวะพร้อมกันโดยเทคนิคไทม์แสตมป์จะไม่ทำให้เกิดเหตุการณ์เดดล็อก เพราะเป็นการเรียงลำดับตามการเกิดของทรานแซกชันก่อนหลังไปเรื่อยๆ 3. Optimistic TechniqueOptimistic Technique เป็นวิธีหรือเทคนิคในการควบคุมภาวะพร้อมกันที่กล่าวแล้ว 2 วิธีแรกนั่นคือวิธีล็อกกิงและไทม์แสตมป์จะเป็นการตรวจสอบก่อนทรานแซกชันก่อนการทำงาน ซึ่งทำให้เกิดความสิ้นเปลือง (overhead) ในระบบจัดการฐานข้อมูลมากขึ้น แต่การควบคุมภาวะพร้อมกันโดย Optimistic Technique จะไม่มีการตรวจสอบล่วงหน้าก่อนทรานแซกชันทำงานหรือขณะทำงาน แต่จะอยู่บนแนวคิดที่ว่าให้ทรานแซกชันทำงานใช้ข้อมูลตามปกติ ข้อมูลที่มีการแก้ไขหรือเปลี่ยนแปลงโดยแต่ละทรานแซกชันจะไม่บันทึกไว้ในฐานข้อมูลโดยตรง แต่จะบันทึกไว้ในพื้นที่อื่นๆ ที่กำหนดไว้ชั่วคราวของแต่ละทรานแซกชัน จนกว่าทรานแซกชันนั้นจะทำงานเสร็จสมบูรณ์เสียก่อน ทั้งนี้ก่อนที่นำข้อมูลที่เก็บไว้ในพื้นที่ชั่วคราวมาบันทึกถาวรในฐานข้อมูล ระบบจัดการฐานข้อมูลจะตรวจสอบเสียก่อนว่า ทรานแซกชันนั้นมีการทำงานแบบขั้นตอนไม่เป็นลำดับ ซึ่งจะ ทำให้เกิดข้อมูลขัดแย้งกับข้อมูลของทรานแซกชันอื่นหรือไม่ หากตรวจแล้วไม่มีความขัดแย้ง ก็จะนำข้อมูลที่เก็บไว้ในพื้นที่ชั่วคราวบันทึกในตัวฐานข้อมูลอย่างถาวรต่อไป แต่ถ้าหากตรวจสอบแล้วมีปัญหาระบบจัดการฐานข้อมูลก็จะยกเลิกผลลัพธ์ของทรานแซกชันนั้น และมีการโรลแบ็ก (roll back) เพื่อเริ่มต้นทำงานทรานแซกชันนั้นใหม่ต่อไป การควบคุมภาวะพร้อมกันโดยวิธี Optimistic Technique แบ่งขั้นตอนตามการทำงานเป็น 3 ขั้นคือ · ขั้นการอ่าน (read phase) เป็นขั้นที่ทรานแซกชันอ่านข้อมูลจากฐานข้อมูล และทำการปรับปรุงแก้ไขข้อมูลที่ต้องการ หลังจากนั้นจะบันทึกไว้ในพื้นที่ชั่วคราวที่กำหนดไว้สำหรับทรานแซกชันนั้น ซึ่งทรานแซกชันอื่นไม่สามารถใช้ข้อมูลของทรานแซกชันในพื้นที่ชั่วคราวได้ · ขั้นการตรวจสอบ (validation phase) เป็นขั้นที่ระบบจัดการฐานข้อมูลจะตรวจสอบลำดับการทำงานของทรานแซกชัน ถ้าหากไม่มีปัญหาก็จะไปทำขั้นการบันทึกต่อไป ถ้าหากมีปัญหาก็จะยกเลิกการทำงานและผลลัพธ์ของทรานแซกชันนั้น · ขั้นการบันทึก (write phase) จะนำข้อมูลที่เก็บไว้ชั่วคราวในพื้นที่ทำงานของทรานแซกชันนั้นมาบันทึกถาวรในฐานข้อมูล ถ้าหากมีปัญหาจากขั้นตรวจสอบก็จะไม่มีการบันทึกข้อมูลในฐานข้อมูล และทรานแซกชันนั้นจะต้องทำงานใหม่ นอกจากนี้ยังมีวิธีการควบคุมภาวะพร้อมกันวิธีอื่นอีก เช่น มัลติเวอร์ชัน (multiversion) ซึ่งเป็นวิธีหนึ่งที่ได้รับความนิยมเช่นกัน |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|