Tìm mức cô lập mặc định trong SQL Server 2017 và Azure SQL DB


9

Tôi đang đọc một cuốn sách liên quan đến giao dịch và đồng thời. Trong một đoạn văn có đề cập rằng:

  • Trong phiên bản SQL Server tại chỗ, mức cô lập mặc định là Đọc-Cam kết dựa trên khóa

Và câu tiếp theo là:

  • Mặc định trong Cơ sở dữ liệu SQL là Đọc - ảnh chụp nhanh được cam kết dựa trên phiên bản hàng

Câu hỏi của tôi là: sự khác biệt giữa "Phiên bản SQL Server tại chỗ" và "Cơ sở dữ liệu SQL" trong hai câu này là gì?

Mức cô lập mặc định là gì và làm thế nào tôi có thể tìm thấy nó? Có bất kỳ truy vấn đặc biệt để tìm ra mức cô lập mặc định?

Câu trả lời:


13

Theo mặc định, cơ sở dữ liệu Azure SQL sử dụng RCSI .

Cấp độ cô lập SQL

Cài đặt cơ sở dữ liệu mặc định của cơ sở dữ liệu là để cho phép đọc cách ly ảnh chụp nhanh đã cam kết (RCSI) bằng cách có cả hai tùy chọn cơ sở dữ liệu READ_COMMITTED_SNAPSHOT và ALLOW_SNAPSHOT_ISOLATION được đặt thành BẬT, tìm hiểu thêm về các mức cô lập tại đây . Bạn không thể thay đổi mức cô lập mặc định của cơ sở dữ liệu. Tuy nhiên, bạn có thể kiểm soát mức cô lập rõ ràng trên một kết nối.

Trong SQL Server tại chỗ, mức cô lập mặc định là Đọc cam kết.

Tìm mức cô lập "mặc định" là một chút đuổi theo ngỗng. Nó sẽ phụ thuộc vào cơ sở dữ liệu nơi bắt đầu truy vấn và nếu có bất kỳ gợi ý nào tồn tại trong truy vấn để ghi đè cài đặt cấp cơ sở dữ liệu.

Điều đó nói rằng, bạn có thể truy vấn sys.databasesđể tìm hiểu xem RCSI hoặc SI được kích hoạt.

SELECT d.name, 
       d.is_read_committed_snapshot_on, 
       d.snapshot_isolation_state
FROM sys.databases AS d;

Lưu ý rằng về READ_COMMITTED_SNAPSHOTmặt kỹ thuật không phải là một mức cô lập. Thay vào đó, nó là một tùy chọn cơ sở dữ liệu kiểm soát việc triển khai để phiên bản hàng thay vì khóa được sử dụng để cung cấp tính nhất quán đọc cho các phiên sử dụng READ_COMMITTEDmức cô lập.

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.