Skip to content

ACID properties

Published: at 12:03 PM
Cover image for ACID properties

Table of Contents

💾 What does ACID Mean?

ACID คือคุณสมบัติที่สำคัญของ Database Transaction เพื่อให้มั่นใจว่า Database ยังคงถูกต้อง และปลอดภัยแม้มีปัญหาเกิดขึ้น เช่น system crash หรือ concurrent access


🔹 Atomicity

“All or Nothing”

  • ธุรกรรม (Transaction) จะต้อง ทำทั้งหมด หรือ ไม่ทำเลย
  • หากการเขียน (write) ใดล้มเหลว ระบบจะยกเลิกทั้งหมด
  • ช่วยป้องกันข้อมูลค้างครึ่งเดียว (partial update)

ตัวอย่าง:
หากต้องโอนเงินจากบัญชี A ไป B

  • ถ้าเงินถูกหักจาก A แต่ยังไม่เพิ่มให้ B แล้วระบบล่ม → ต้อง rollback

🔸 Consistency

“Preserving Database Invariants”

  • ฐานข้อมูลต้อง เปลี่ยนจากสถานะที่ถูกต้องหนึ่ง ไปยังอีกสถานะที่ถูกต้องหนึ่ง
  • ต้องไม่ละเมิดกฎหรือ constraint ของระบบ

ตัวอย่าง:

  • ห้ามมี balance ติดลบ
  • ทุก foreign key ต้องชี้ไปยัง key จริง

🔻 Isolation

“Concurrent Transactions are Isolated”

  • ธุรกรรมหลายรายการที่รันพร้อมกันจะ ต้องไม่รบกวนกัน
  • ผลลัพธ์ควรเหมือนกับการรันทีละรายการ

ตัวอย่าง:
Transaction A และ B เขียนข้อมูลพร้อมกัน → แต่ละ transaction จะไม่เห็นการเปลี่ยนแปลงของอีกฝั่งจนกว่า commit


🔷 Durability

“Persisted Even After Crash”

  • เมื่อ commit แล้ว ข้อมูลจะ ยังคงอยู่ แม้ระบบล่ม
  • ใช้การเขียนลง disk และ replication เพื่อให้มั่นใจว่าข้อมูลจะไม่หาย

ตัวอย่าง:
เมื่อ user กด “ยืนยันคำสั่งซื้อ” แล้วข้อมูลถูก commit → แม้ server crash ก็ยังสามารถกู้กลับได้


✅ สรุป

คุณสมบัติคำอธิบาย
Atomicityทำทั้งหมดหรือไม่ทำเลย
Consistencyรักษาความถูกต้องของฐานข้อมูล
Isolationธุรกรรมแยกจากกันอย่างอิสระ
Durabilityข้อมูลคงอยู่แม้ระบบล่ม

ACID คือหัวใจของความน่าเชื่อถือในระบบฐานข้อมูลเชิงธุรกรรม เช่น MySQL, PostgreSQL, Oracle, SQL Server