2/09/2015

ทำความรู้จักกับ Transaction ใน Database


Transaction คือ การดำเนินการธุรกรรม ที่กระทำข้อมูลให้เกิดการเปลี่ยนจากสถานะนึง ไปเป็นอีกสถานะนึง ภายในหนึ่ง Transaction อาจจะมีหนึ่งคำสั่ง หรือหลายๆคำสั่งก็ได้ เช่น การโอนเงิน ก็จะเกิดจากการถอนเงินจากบัญชีนึง และนำไปฝากให้อีกบัญชีนึงนั่นเอง

ก่อนจะไปรู้จักอย่างอื่นเรามารู้จักกับสถานะของ Transaction ก่อน ซึ่งมีด้วยกัน 2 สถานะคือ

1.) Commit หมายถึง คำสั่งทุกคำสั่งที่เกิดใน Transaction นั้น ประมวลผลเสร็จสมบูรณ์ทุกคำสั่ง ทำให้เปลี่ยนแปลงค่าของข้อมูลใน Database อย่างถาวร

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

คุณสมบัติของ Transaction มี 4 อย่าง

1.) Atomicity จะมีด้วยกัน 2 states

  • Done - คือ Transaction นั้นจะประมวลผลเสร็จสมบูรณ์ทุกคำสั่ง ไม่มีผิดพลาด ข้อมูลจะปรับเปลี่ยน และโชว์ให้เห็นเหมือนเรียกดูใน Database ทันที
  • Never Started คือ ถ้าเกิดการประมวลผลใน Transaction นั้นเกิดการผิดพลาดขึ้น จะเกิดการ Rollback ผลนำข้อมูลกลับไปเป็นค่าเดิมก่อนที่จะเกิด Transaction
2.) Consistency การประมวลผล Transaction จะก่อให้เกิดการเปลี่ยนสถานะของข้อมูล ดังนั้นจะต้องรักษาความถูกต้องของข้อมูลเอาไว้ คือหลังจากประมวลผลเสร็จ ข้อมูลจะต้องอยู่ในสถานะที่ถูกต้อง ถ้าไม่ถูกต้องก็จะเกิดการ Rollback

3.) Isolation คือ Transaction ที่มีการทำงานพร้อมกันในเวลาเดียวกันจากผู้ใช้หลายๆคนนั้น จะต้องไม่เกิดการรบกวน แทรกแซงกัน

4.) Durability or permanency หมายถึง Transactions ที่ทำคำสั่งเสร็จสมบูรณ์ คือเกิดการ commit จะทำให้ข้อมูลอยู่ใน Database อย่างถาวร และจะคงอยู่ แม้ว่าระบบจะล่ม

2 comments: