Skip to main content

การควบคุมพร้อมกันคืออะไร?

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

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

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

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

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