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

Tại sao lại sử dụng mức cách ly READ UNCOMMITTED?

Mức độ cách ly này cho phép đọc bẩn. Một giao dịch có thể thấy các thay đổi chưa cam kết được thực hiện bởi một số giao dịch khác.

Để duy trì mức độ cô lập cao nhất, DBMS thường có được các khóa dữ liệu, điều này có thể dẫn đến mất tính đồng thời và chi phí khóa cao. Mức độ cô lập này làm giãn thuộc tính này.

Bạn có thể muốn xem bài viết trên Wikipedia về READ UNCOMMITTED để biết một vài ví dụ và đọc thêm.

Bạn cũng có thể quan tâm đến việc xem bài viết trên blog của Jeff Atwood về cách anh ấy và nhóm của mình giải quyết vấn đề bế tắc trong những ngày đầu của Stack Overflow. Theo Jeff:

Nhưng là nolock nguy hiểm? Bạn có thể kết thúc việc đọc dữ liệu không hợp lệ với read uncommitted không trên? Đúng, trên lý thuyết. Bạn sẽ thấy không thiếu các phi hành gia kiến ​​trúc cơ sở dữ liệu, những người bắt đầu nghiên cứu khoa học ACID về bạn và kéo chuông báo cháy của tòa nhà khi bạn nói với họ rằng bạn muốn thử nolock .Đúng:lý thuyết thật đáng sợ. Nhưng đó là những gì tôi nghĩ:"Về lý thuyết không có sự khác biệt giữa lý thuyết và thực hành. Trong thực tế thì có."

Tôi không bao giờ khuyên bạn nên sử dụng nolock dầu rắn nói chung "tốt cho những gì bạn gặp phải" khắc phục cho bất kỳ vấn đề cơ sở dữ liệu nào mà bạn có thể gặp phải. Bạn nên thử chẩn đoán nguồn gốc của sự cố trước.

Nhưng trên thực tế, thêm nolock đối với các truy vấn mà bạn hoàn toàn biết là những việc đơn giản, chỉ đọc dễ hiểu dường như không bao giờ dẫn đến vấn đề ... Miễn là bạn biết mình đang làm gì.

Một thay thế cho READ UNCOMMITTED cấp mà bạn có thể muốn xem xét là READ COMMITTED SNAPSHOT . Trích dẫn lại Jeff:

Ảnh chụp nhanh dựa trên một phương pháp theo dõi thay đổi dữ liệu hoàn toàn mới ... không chỉ là một thay đổi logic nhỏ, nó yêu cầu máy chủ xử lý dữ liệu theo cách khác về mặt vật lý. Khi phương pháp theo dõi thay đổi dữ liệu mới này được bật, nó sẽ tạo một bản sao hoặc ảnh chụp nhanh của mọi thay đổi dữ liệu. Bằng cách đọc những ảnh chụp nhanh này thay vì dữ liệu trực tiếp tại thời điểm tranh cãi, Khóa chia sẻ không còn cần thiết khi đọc và hiệu suất cơ sở dữ liệu tổng thể có thể tăng lên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp kết nối trong .NET / SQL Server?

  2. Điều gì xảy ra với Id khóa chính khi nó vượt quá giới hạn?

  3. Bật tác nhân SQL Server qua SSMS

  4. Sự khác biệt giữa các phép chuyển đổi Kết hợp Tham gia và Tra cứu trong SSIS là gì?

  5. Làm cách nào để cho phép tham số danh sách thả xuống trong SSRS có giá trị mặc định là - Tất cả -?