Trong trường hợp có nhiều bản cập nhật của cùng một bản ghi trong một giao dịch, có bao nhiêu phiên bản đang được lưu trữ?


11

Theo bài viết MSDN của Kimberly L. Tripp, " Cách ly giao dịch dựa trên phiên bản hàng của SQL Server 2005 " của Neal Graves

  • "... Tất cả các phiên bản trước đó của một bản ghi cụ thể đều được kết nối trong danh sách được liên kết và trong trường hợp giao dịch dựa trên phiên bản hàng dài chạy, liên kết sẽ phải được duyệt qua mỗi lần truy cập để đạt được phiên bản nhất quán giao dịch hàng"

nằm trong phần "Tìm hiểu phiên bản hàng" phổ biến để theo cả hai phần "Phiên bản hàng trong đọc cam kết sử dụng phiên bản hàng" và "Phiên bản hàng trong cách ly ảnh chụp nhanh".

Ngoài ra, ví dụ về phiên bản hàng do sửa đổi được đưa ra trong bối cảnh nhiều bản cập nhật của cùng một bản ghi bằng nhiều giao dịch (T1, T2, T3) chỉ trong SNAPSHOT.

Trong trường hợp chỉ có một giao dịch cập nhật một bản ghi nhiều lần (bằng nhiều câu lệnh), nhiều cửa hàng phiên bản sẽ được lưu trữ (được liên kết) hay chỉ một giao dịch được thực hiện tại thời điểm "hình ảnh" SNAPSHOT được chụp?

Chà, câu trả lời cho câu hỏi này sẽ trả lời ngay những câu hỏi liên quan đang chờ xử lý khác của tôi:

Câu trả lời:


11

Trong trường hợp có nhiều cập nhật của cùng một bản ghi trong một giao dịch, có bao nhiêu phiên bản được lưu trữ?

Chỉ một.

Bản cập nhật đầu tiên cho hàng tạo ra một phiên bản hàng và độc quyền khóa hàng. Các bản cập nhật sau này cho cùng một hàng trong cùng một giao dịch không tạo ra các phiên bản hàng mới.


Một danh sách liên kết của các phiên bản hàng có thể phát sinh như sau:

  • Giao dịch T1 trong giao dịch SNAPSHOT đọc một hàng và thấy giá trị 'a'.

  • Giao dịch T2 (dưới bất kỳ mức cô lập nào) cập nhật giá trị từ 'a' đến 'b' và cam kết. Điều này tạo ra một phiên bản hàng cho giá trị 'a'.

  • Giao dịch T3 (dưới bất kỳ mức cô lập nào) cập nhật giá trị từ 'b' đến 'c' và cam kết. Điều này tạo ra một phiên bản hàng cho giá trị 'b'. Phiên bản hàng này liên kết với phiên bản hàng trước cho 'a'.

  • Giao dịch T1 đọc giá trị hàng bằng cách duyệt qua liên kết từ giá trị được lưu trữ trên trang hiện tại ('c'), đến phiên bản hàng 'b', rồi quay lại phiên bản hàng 'a'.

Các phiên bản hàng được tạo bởi các thay đổi dữ liệu bất kể có giao dịch đọc hiện tại hay không (ở bất kỳ mức cô lập nào). Các phiên bản có thể không bao giờ cần thiết, nhưng chúng vẫn được tạo - danh sách các phiên bản được liên kết tương tự được tạo ngay cả khi không có giao dịch T1.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.