ในกรณีที่มีการอัปเดตหลายระเบียนในรายการเดียวมีการจัดเก็บรุ่นกี่เวอร์ชัน


11

อ้างอิงจากบทความ MSDN โดย Kimberly L. Tripp การแยกธุรกรรมโดยใช้การควบคุมเวอร์ชันของSQL Server 2005 Rowของ Neal Graves

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

ซึ่งอยู่ในส่วน "การทำความเข้าใจกับการกำหนดเวอร์ชันของแถว" สำหรับการติดตามทั้ง "การกำหนดเวอร์ชันของแถวในการอ่านที่กระทำโดยใช้การกำหนดเวอร์ชันของแถว" และ "การกำหนดเวอร์ชันของแถวในการแยก Snapshot"

เพิ่มเติมเกี่ยวกับตัวอย่างของการกำหนดเวอร์ชันของแถวเนื่องจากการปรับเปลี่ยนมีให้ในบริบทของการอัพเดตหลายรายการของเร็กคอร์ดเดียวกันโดยการทำธุรกรรมหลายรายการ (T1, T2, T3) ใน SNAPSHOT เท่านั้น

ในกรณีที่มีเพียงหนึ่งธุรกรรมที่อัปเดตบันทึกหลายครั้ง (โดยหลายงบ) จะมีการจัดเก็บหลายรุ่น (เชื่อมโยง) หรือเฉพาะรายการที่ถ่ายในช่วงเวลาที่มีการ "จับภาพ" SNAPSHOT หรือไม่

คำตอบสำหรับคำถามนี้ควรตอบคำถามที่เกี่ยวข้องที่รอดำเนินการของฉันทันที:

คำตอบ:


11

ในกรณีที่มีการอัปเดตหลายรายการในเร็กคอร์ดเดียวกันในหนึ่งธุรกรรมจะมีการจัดเก็บกี่เวอร์ชัน?

แค่หนึ่ง.

การอัปเดตครั้งแรกไปยังแถวจะสร้างเวอร์ชันของแถวและล็อคแถวโดยเฉพาะ การอัพเดตในแถวเดียวกันในภายหลังในธุรกรรมเดียวกันไม่ได้สร้างเวอร์ชันแถวใหม่


รายการลิงก์ของเวอร์ชันแถวสามารถเกิดขึ้นได้ดังนี้:

  • ธุรกรรม T1 ในธุรกรรม SNAPSHOT อ่านแถวและเห็นค่า 'a'

  • ธุรกรรม T2 (ภายใต้ระดับการแยกใด ๆ ) จะอัปเดตค่าจาก 'a' ถึง 'b' และคอมมิท สิ่งนี้จะสร้างเวอร์ชันแถวสำหรับค่า 'a'

  • ธุรกรรม T3 (ภายใต้ระดับการแยกใด ๆ ) จะอัปเดตค่าจาก 'b' เป็น 'c' และคอมมิท สิ่งนี้จะสร้างเวอร์ชันแถวสำหรับค่า 'b' เวอร์ชันแถวนี้เชื่อมโยงไปยังเวอร์ชันแถวก่อนหน้าสำหรับ 'a'

  • ธุรกรรม T1 อ่านค่าแถวโดยเข้าไปที่ลิงก์จากค่าที่เก็บไว้ในหน้าปัจจุบัน ('c') ไปยังรุ่นแถว 'b' และจากนั้นกลับสู่รุ่นแถว 'a'

แถวเวอร์ชันถูกสร้างขึ้นโดยการเปลี่ยนแปลงข้อมูลโดยไม่คำนึงว่ามีธุรกรรมการอ่านที่มีอยู่ (ที่ระดับการแยกใด ๆ ) อาจไม่จำเป็นต้องมีรุ่น แต่ยังคงสร้างรายการเชื่อมโยงรุ่นเดียวกันถูกสร้างขึ้นแม้ไม่มีธุรกรรม T1

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.