MySQL: ทรานแซกชั่น (Transaction)

ทรานแซกชั่น (Transaction) คือ บล๊อกของคำสั่ง SQL ซึ่งอาจจะมีเพียงคำสั่งเดียว หรือมีมากกว่าหนึ่งคำสั่งก็ได้

 

ทรานแซกชั่นที่สมบูรณ์

คือการประมวลผลคำสั่งที่อยู่ใน Transaction นั้นทั้งหมดสามารถทำได้สำเร็จทุกคำสั่ง

 

ทรานแซกชั่นที่ไม่สมบูรณ์

คือการประมวลผลคำสั่งที่อยู่ใน Transaction นั้นไม่สามารถทำสำเร็จได้หมดทุกคำสั่ง

 

ยกตัวอย่างเช่น

เราทำการโอนเงินที่ตู้ของธนาคารแห่งหนึ่ง ซึ่งในระบบมีคำสั่งต่าง ๆ ดังต่อไปนี้

 

การโอนเงิน

  1. เริ่มต้น Transaction
  2. อ่านบัตร ATM
  3. ตรวจสอบรหัสผ่าน
  4. รับและกำหนดค่ายอดเงินโอน
  5. หักยอดเงินต้นทาง
  6. ตรวจสอบบัญชีปลายทาง
  7. เพิ่มยอดเงินให้บัญชีปลายทาง
  8. สิ้นสุด Transaction

 

จากตัวอย่างจะเห็นว่าหนึ่ง Transaction มีขั้นตอนที่ต้องทำให้สำเร็จ 8 ขั้นตอน ถ้าเกิดข้อขัดข้องขึ้นในขั้นตอนที่ 5 คือหักยอดเงินบัญชีต้นทางสำเร็จแล้ว แต่ยังไม่ได้เพิ่มเงินให้กับบัญชีปลายทาง จะเกิดอะไรขึ้น ?

 

หลักการทำงานของ Transaction  เกิดขึ้นมาเพื่อการนี้ หากมีการเขียน Transaction เอาไว้แล้ว เราก็ไม่ต้องกังวลใด ๆ เพราะถ้าคำสั่งใดคำสั่งหนึ่งใน Transaction ทำงานไม่สำเร็จ ระบบจะย้อนกลับไปยังจุดเริ่มต้นของ Transaction  เสมือนว่าเหตุการณ์ทั้งหมดไม่ได้เกิดขึ้น

 

องค์ประกอบของทรานแซกชั่น

ทรานแซกชั่นมีองค์ประกอบที่สำคัญ 4 ประการคือ ACID

A = Atomic

คือ ทุกคำสั่งใน Transaction จะต้องสามารถประมวลผลได้สำเร็จทั้งหมด ถ้าไม่อย่างนั้นแล้วจะต้องคืนสภาพกลับไปยังจุดเริ่มต้น เหมือนไม่มีอะไรเกิดขึ้นเลย

 

C = Consistent

คือ ไม่ว่าการประมวลผลคำสั่งใน Transaction จะสมบูรณ์หรือไม่ก็ตาม ฐานข้อมูลจะต้องคงสภาพความถูกต้องอยู่เสมอ เพราะถ้าการประมวลผลใน Transaction ไม่สมบูรณ์จะต้องมีการคืนสภาพกลับไปจุดเริ่มต้นก่อนการทำ Transaction

 

I = Isolated

คือ ในแต่ละ Transaction จะต้องถูกแยกออกจากกันอย่างสิ้นเชิง ทำให้มั่นใจได้ว่า การประมวลผลคำสั่งใน Transaction หนึ่ง จะไม่กระทบต่ออีก Transaction หนึ่ง

 

D = Durable

คือ เมื่อ Transaction ถูกประมวลผลจนสมบูรณ์แล้ว สามารถมั่นใจได้ว่าข้อมูลจะถูกปรับปรุง และบันทึกลงในฐานข้อมูลอย่างถูกต้องเช่นกัน

 

 

ธมนวรรณ มณีจันทร์

ธมนวรรณ มณีจันทร์

|:- เราเชื่อมั่นว่าการเสียสละและการแบ่งปันจะทำให้โลกใบนี้สวยงามมากขึ้น ทุกๆ จุดเริ่มต้นของการเรียนรู้ นำไปสู่การเรียนรู้ถัดไป เว็บไซต์แห่งนี้ขอเป็นส่วนหนึ่งของการแบ่งปันความรู้ที่ไม่มีที่สิ้นสุด มาร่วมกันผลักดันโลกของเราให้หมุนไปพร้อมกับพลังแห่งความรักด้วยกันนะคะ :) >>>
|:- About Me! -:|