Race Condition: เมื่อสองงานชนกัน แล้วข้อมูลเพี้ยน

28 มิถุนายน 2569อ่าน 6 นาที
Race Condition: เมื่อสองงานชนกัน แล้วข้อมูลเพี้ยน

ลูกค้าสองคนกดซื้อของชิ้นสุดท้ายพร้อมกัน ระบบควรขายได้คนเดียว แต่ถ้าออกแบบไม่ดี อาจขายได้ทั้งคู่ นี่คือ Race Condition ปัญหาที่เกิดเมื่อสองงานทำพร้อมกันบนข้อมูลเดียว

Race Condition เกิดเมื่อสองงานทำงานพร้อมกันบนข้อมูลเดียวกัน แล้วผลลัพธ์ขึ้นกับว่าใครเสร็จก่อน ตัวอย่างคลาสสิกคือสินค้ามีชิ้นสุดท้าย ลูกค้าสองคนกดซื้อพร้อมกัน ถ้าทั้งสองคำขออ่านเห็นว่ายังมีของหนึ่งชิ้นในเสี้ยววินาทีเดียวกัน ระบบอาจขายให้ทั้งคู่ แล้วสต็อกติดลบ ปัญหานี้ไม่โผล่ตอนทดสอบทีละคน แต่จะเกิดเมื่อมีคนใช้พร้อมกันจริง

ทำไมถึงตรวจยากและอันตราย

Race Condition เป็นบั๊กที่เกิดเป็นครั้งคราวตามจังหวะเวลา จึงทำซ้ำให้เห็นได้ยาก และมักรอดผ่านการทดสอบปกติไปขึ้นระบบจริง ผลกระทบมีตั้งแต่ขายเกินสต็อก ตัดเงินซ้ำ ไปจนถึงยอดคงเหลือผิด ซึ่งล้วนกระทบความเชื่อมั่นและบัญชีของธุรกิจโดยตรง

  • ใช้กลไกล็อกหรือธุรกรรมของฐานข้อมูล เพื่อให้สองงานไม่แก้พร้อมกัน
  • ตรวจเงื่อนไขตอนเขียนจริง ไม่ใช่เชื่อค่าที่อ่านมาก่อนหน้า
  • ทดสอบด้วยการยิงคำขอพร้อมกันจำนวนมาก เพื่อจับปัญหาแบบนี้

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

Race ConditionConcurrencyReliabilitySoftware Engineering

บริการที่เกี่ยวข้อง

รับพัฒนาเว็บแอปพลิเคชัน

สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้

WhaleScope

ดูโครงสร้างตลาดของธุรกิจซอฟต์แวร์ สื่อ และไอที บน WhaleScope

รายชื่อบริษัท ผู้เล่นรายใหญ่ อัตราคงอยู่ และการกระจายรายจังหวัดของหมวดการจัดทำโปรแกรมคอมพิวเตอร์ — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล

อ่านต่อ

Optimistic หรือ Pessimistic Locking: กันข้อมูลชนกันเมื่อหลายคนแก้พร้อมกัน

เมื่อสองคนแก้ข้อมูลเดียวกันพร้อมกัน ใครจะชนะ และอีกคนจะรู้ไหมว่างานถูกทับ Optimistic กับ Pessimistic Locking คือสองวิธีจัดการ ที่เหมาะกับสถานการณ์ต่างกัน

Idempotency และ Retry: ออกแบบระบบที่ทำงานซ้ำได้โดยไม่พัง

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

N+1 Query: ปัญหายอดฮิตที่ทำให้ระบบช้าโดยไม่รู้ตัว

หน้าจอที่แสดงรายการ 100 รายการ อาจยิงคำขอไปฐานข้อมูลถึง 101 ครั้งโดยไม่จำเป็น นี่คือปัญหา N+1 Query ที่พบบ่อยมาก ฟังดูเล็กแต่ทำให้ระบบช้าลงหลายเท่า

Uptime Monitoring คืออะไร: รู้ว่าเว็บล่มก่อนลูกค้าโทรมาบอก

เว็บหรือระบบล่มตอนกลางคืนหรือช่วงที่ไม่มีใครดู อาจไม่มีใครรู้จนลูกค้าบ่นหรือยอดขายหาย Uptime monitoring คือระบบที่คอยเช็กว่าเว็บและระบบยังทำงานอยู่ตลอดเวลา และแจ้งเตือนทันทีที่ล่ม เพื่อให้แก้ได้ก่อนความเสียหายลาม