Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Mẹo để đọc / ghi khóa tùy thuộc vào mức độ cách ly giao dịch trong MSSQL

Đọc không được chấp nhận

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc và sẽ trả về các mục nhập dữ liệu của các giao dịch chưa cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, thì việc cập nhật dữ liệu này trong giao dịch khác sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung không được sử dụng. Giống hệt với cài đặt t anh ấy NOLOCK gợi ý cho tất cả các lựa chọn trong Đã cam kết đã đọc.
  • Các khóa độc quyền được bật trong khi thực thi câu lệnh và bị tắt ở cuối o f the giao dịch .

Đã cam kết đọc + tắt read_commiss_snapshot
(thay đổi cơ sở dữ liệu xxx, tắt read_commiss_snapshot)

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ đợi cho đến khi giao dịch đầu tiên kết thúc. Sele ct với the KIỂM TRA gợi ý sẽ trả về dữ liệu đã sửa đổi nhưng chưa được cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, thì việc cập nhật dữ liệu này trong giao dịch khác sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung đang được bật trong quá trình thực thi câu lệnh và bị tắt ở cuối trạng thái nt thực thi .
  • Các khóa độc quyền đang được bật trong khi thực hiện sao kê và bị vô hiệu hóa khi kết thúc giao dịch .

Đã cam kết đọc + read_com allow_snapshot on
(thay đổi cơ sở dữ liệu xxx đặt read_commiss_snapshot on)

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc và sẽ trả về các giá trị tại momen t trong số cái bắt đầu giao dịch . Chọn với the Gợi ý NOCHECK sẽ trả về dữ liệu đã sửa đổi nhưng chưa được cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, thì việc cập nhật dữ liệu này trong giao dịch khác sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung không được sử dụng. Thay vào đó, cơ chế Phiên bản hàng được sử dụng - dữ liệu của các bản ghi cập nhật được lưu trữ trong tempdb .
  • Các khóa độc quyền đang được bật trong khi thực hiện sao kê và bị tắt khi kết thúc giao dịch .

Đọc lặp lại

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ đợi cho đến khi giao dịch đầu tiên kết thúc. Chọn với the NOLOCK gợi ý sẽ trả về dữ liệu đã sửa đổi nhưng chưa được cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, các bản cập nhật của dữ liệu này trong giao dịch khác sẽ đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung đang được bật trong quá trình thực thi sao kê và bị tắt khi kết thúc giao dịch , không giống như Đã cam kết đọc.
  • Các khóa độc quyền đang được bật trong khi thực hiện sao kê và bị vô hiệu hóa khi kết thúc giao dịch .

Có thể nối tiếp

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ đợi cho đến khi giao dịch đầu tiên kết thúc. Chọn với the NOLOCK gợi ý sẽ trả về dữ liệu đã sửa đổi nhưng chưa được cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, các bản cập nhật của dữ liệu này trong giao dịch khác sẽ đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung được bật trong quá trình thực thi sao kê và bị vô hiệu hóa khi kết thúc giao dịch .
  • Các khóa độc quyền đang được bật trong quá trình thực thi sao kê và đang bị vô hiệu hóa khi kết thúc giao dịch.
  • Khóa phạm vi độc quyền đang được bật cho các khóa đáp ứng phạm vi tiêu chí truy vấn. Không được phép chèn các bản ghi mới nằm trong phạm vi này. Giống hệt với cài đặt the HOLDLO CK gợi ý cho tất cả các CHỌN trong Đọc Đã cam kết .

Ảnh chụp nhanh
(thay đổi cơ sở dữ liệu xxx đặt allow_snapshot_isolation on)

  • Nếu dữ liệu được thay đổi trong một giao dịch, việc lựa chọn dữ liệu này (trong giao dịch khác hoặc không có giao dịch) sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc. và sẽ trả về các giá trị tại thời điểm này trong tổng số cái bắt đầu giao dịch . Chọn với the NOLOCK gợi ý sẽ trả về dữ liệu đã sửa đổi nhưng chưa được cam kết.
  • Nếu dữ liệu đang được đọc trong một giao dịch, thì việc cập nhật dữ liệu này trong giao dịch khác sẽ không đợi cho đến khi giao dịch đầu tiên kết thúc.
  • Các khóa dùng chung không được sử dụng. Thay vào đó, cơ chế Phiên bản hàng được sử dụng - dữ liệu của các bản ghi cập nhật được lưu trữ trong tempdb .
  • Các khóa độc quyền đang được bật trong quá trình thực thi sao kê và bị vô hiệu hóa khi kết thúc giao dịch.

Đã thử nghiệm trên MSSQL 2014.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa các ràng buộc nội tuyến và ngoại tuyến

  2. Mô hình dữ liệu thư viện

  3. 4 Phương pháp chuyển đổi dữ liệu SQL Out-of-the-Box và các trường hợp sử dụng

  4. Cách cài đặt Microsoft SQL trên Linux

  5. Điều chỉnh Hiệu suất Toàn bộ Kế hoạch Truy vấn