ScholarGate
ผู้ช่วย

การจัดการธุรกรรมและการทำงานพร้อมกัน

การจัดการธุรกรรมและการควบคุมการทำงานพร้อมกันช่วยให้ฐานข้อมูลสามารถดำเนินการธุรกรรมพร้อมกันจำนวนมากได้อย่างถูกต้องและอยู่รอดจากความล้มเหลว โดยรับประกันคุณสมบัติความเป็นอะตอมมิค (atomicity), ความสอดคล้อง (consistency), การแยกจากกัน (isolation) และความคงทน (durability) (ACID)

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

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

Scope

ขอบเขตนี้ครอบคลุมธุรกรรมในฐานะหน่วยของงานและกลไกที่ทำให้การดำเนินการพร้อมกันที่อาจเกิดความล้มเหลวเป็นไปอย่างถูกต้อง: คุณสมบัติ ACID; ความสามารถในการจัดลำดับ (serializability) ในฐานะเกณฑ์ความถูกต้องสำหรับการทำงานพร้อมกัน; โปรโตคอลการล็อก (locking), การประทับเวลา (timestamp) และหลายเวอร์ชัน (multiversion) ที่บังคับใช้; ระดับการแยกจากกันที่อ่อนแอลงซึ่งแลกเปลี่ยนความสอดคล้องกับประสิทธิภาพ; และเทคนิคการบันทึก (logging) และการกู้คืน (recovery) ที่รับรองความเป็นอะตอมมิคและความคงทนเมื่อเกิดข้อขัดข้อง ไม่รวมถึงการคอมมิตแบบกระจาย (distributed commit) ข้ามหลายไซต์ ซึ่งจะกล่าวถึงในส่วนของฐานข้อมูลแบบกระจายและแบบขนาน

Sub-topics

Core questions

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

Key concepts

  • ธุรกรรมและการคอมมิต/ยกเลิก
  • คุณสมบัติ ACID
  • ความสามารถในการจัดลำดับและกราฟลำดับความสำคัญ
  • การล็อกสองเฟส
  • การเรียงลำดับตามการประทับเวลา
  • การควบคุมการทำงานพร้อมกันแบบหลายเวอร์ชัน
  • การตรวจจับและการป้องกันภาวะชะงักงัน
  • การบันทึกแบบเขียนล่วงหน้า
  • ระดับการแยกจากกัน

Key theories

คุณสมบัติ ACID
ความเป็นอะตอมมิค (การดำเนินการแบบทั้งหมดหรือไม่มีเลย), ความสอดคล้อง (การรักษาข้อจำกัดความสมบูรณ์), การแยกจากกัน (ธุรกรรมที่ทำงานพร้อมกันดูเหมือนจะทำงานเพียงลำพัง) และความคงทน (ผลลัพธ์ที่คอมมิตแล้วอยู่รอดจากความล้มเหลว) ร่วมกันกำหนดพฤติกรรมธุรกรรมที่ถูกต้อง
ความสามารถในการจัดลำดับ
กำหนดการทำงานพร้อมกันจะถูกต้องหากเทียบเท่ากับการดำเนินการแบบอนุกรมบางอย่าง; ความสามารถในการจัดลำดับความขัดแย้ง ซึ่งทดสอบผ่านกราฟลำดับความสำคัญ (serialization graph) เป็นเกณฑ์ปฏิบัติที่โปรโตคอลควบคุมการทำงานพร้อมกันบังคับใช้
การควบคุมการทำงานพร้อมกันและการกู้คืน
วิธีการล็อก, การเรียงลำดับตามการประทับเวลา และหลายเวอร์ชันป้องกันการสลับการทำงานที่ไม่สามารถจัดลำดับได้ ในขณะที่การบันทึกแบบเขียนล่วงหน้าและอัลกอริทึมการกู้คืนรับประกันความเป็นอะตอมมิคและความคงทน ซึ่งเป็นสองส่วนของการประมวลผลธุรกรรมที่ถูกต้อง

Clinical relevance

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

History

แนวคิดธุรกรรมและคุณสมบัติ ACID ได้รับการกำหนดอย่างเป็นทางการที่ IBM's System R ในทศวรรษ 1970; Eswaran และคณะ (1976) ได้กำหนดแนวคิดความสอดคล้องและการล็อก, Jim Gray ได้นิยามธุรกรรมและการกู้คืน, และ Bernstein, Hadzilacos, และ Goodman (1987) ได้จัดระบบทฤษฎีความสามารถในการจัดลำดับ การมีส่วนร่วมของ Gray ในการประมวลผลธุรกรรมทำให้เขาได้รับรางวัล Turing Award

Key figures

  • Jim Gray
  • Philip Bernstein
  • Andreas Reuter

Related topics

Seminal works

  • gray1992
  • bernstein1987
  • eswaran1976

Frequently asked questions

การที่กำหนดการของธุรกรรมสามารถจัดลำดับได้หมายความว่าอย่างไร?
กำหนดการทำงานพร้อมกันจะสามารถจัดลำดับได้หากผลลัพธ์โดยรวมเหมือนกับการรันธุรกรรมเดียวกันทีละรายการตามลำดับใดลำดับหนึ่ง ความสามารถในการจัดลำดับเป็นเกณฑ์ความถูกต้องมาตรฐานทองคำ: แม้ว่าธุรกรรมจะสลับการทำงานเพื่อประสิทธิภาพ แต่ผลลัพธ์ก็เหมือนกับว่าได้ดำเนินการแบบอนุกรม ดังนั้นจึงไม่มีธุรกรรมใดเห็นสถานะกลางที่ไม่สอดคล้องกัน
ทำไมจึงอนุญาตให้มีระดับการแยกจากกันที่อ่อนแอลงได้ หากอาจทำให้เกิดความผิดปกติ?
การบังคับใช้ความสามารถในการจัดลำดับอย่างเต็มที่นั้นมีค่าใช้จ่ายด้านประสิทธิภาพในการแย่งชิงการล็อกและการยกเลิก แอปพลิเคชันจำนวนมากสามารถทนต่อความผิดปกติบางอย่างได้เพื่อแลกกับความสามารถในการทำงานพร้อมกันที่สูงขึ้น ดังนั้นมาตรฐาน SQL จึงกำหนดระดับการแยกจากกันที่อ่อนแอลง (อ่านที่คอมมิตแล้ว, อ่านซ้ำได้ และอื่นๆ) ซึ่งช่วยให้นักพัฒนาสามารถแลกเปลี่ยนการแยกจากกันบางส่วนกับปริมาณงานได้โดยเจตนา

Methods for this concept

Related concepts