Sobes.tech
Junior — Middle

Ҳангоми иҷрои як вақт чанд дархосте, ки маълумоти ҳамонро тағир медиҳанд, дар шароити ду транзаксия, кадом хатарҳо ба вуҷуд меоянд?

sobes.tech AI

Ҷавоб аз AI

เมื่อดำเนินการคำขอหลายรายการพร้อมกันซึ่งแก้ไขข้อมูลเดียวกันในธุรกรรมต่าง ๆ จะเกิดความเสี่ยงต่อไปนี้:

  • สภาพการแข่งขัน (Race Condition): การเปลี่ยนแปลงของธุรกรรมหนึ่งอาจเขียนทับการเปลี่ยนแปลงของอีกธุรกรรมหนึ่ง ทำให้ข้อมูลสูญหาย

  • การละเมิดความสมบูรณ์ของข้อมูล: หากธุรกรรมไม่ได้รับการแยกตัวอย่างเหมาะสม ข้อมูลอาจอยู่ในสภาพไม่สอดคล้องกัน

  • การอ่านภาพลวงตา: ธุรกรรมหนึ่งเห็นแถวที่ถูกแก้ไขหรือเพิ่มใหม่โดยธุรกรรมอื่น

  • การล็อคตาย (Deadlocks): ธุรกรรมอาจบล็อกกันและกันโดยรอให้ทรัพยากรปล่อยออก

  • การอัปเดตที่สูญหาย (Lost Updates): เมื่อคำขอสองรายการอ่านข้อมูลเดียวกันและพยายามอัปเดตข้อมูลนั้น การเปลี่ยนแปลงของหนึ่งอาจถูกเขียนทับโดยอีกหนึ่ง

เพื่อป้องกันปัญหาเหล่านี้ ใช้ระดับการแยกตัวของธุรกรรมและกลไกการล็อค เช่น SELECT FOR UPDATE หรือกลไกล็อคแบบเชิงบวก (optimistic locking)