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

Khóa hàng, trang và bảng là gì? Và khi nào chúng được mua lại?

Khóa hàng

Khóa hàng là mức độ chi tiết thấp nhất của khóa có thể có trong SQL Server. Điều này có nghĩa là một hoặc nhiều hàng cụ thể sẽ bị khóa và các hàng liền kề vẫn có sẵn để khóa bằng các truy vấn đồng thời.

Khóa trang

Khóa trang trong SQL Server sẽ khóa 8K dữ liệu ngay cả khi truy vấn của bạn chỉ cần 10 byte từ trang. Vì vậy, truy vấn của bạn sẽ khóa dữ liệu bổ sung mà bạn không yêu cầu trong truy vấn của mình.

Khóa Hobt

Khi một bảng được phân vùng bằng "Phân vùng bảng SQL Server", có thể một phân vùng Đơn sẽ bị khóa (Hobt là viết tắt của Heap hoặc B-Tree)

Lưu ý: Khóa chuyển sang HOBT khóa bị tắt theo mặc định. chạy ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO) để bật báo cáo khóa HOBT.

Khóa bảng

Khóa bảng sẽ khóa toàn bộ bảng.

Trang dữ liệu là gì

Microsoft SQL Server tổ chức tất cả dữ liệu của nó trong "Trang dữ liệu" có thể chứa 8 nghìn dữ liệu. Điều này có nghĩa là đối với bất kỳ quyền truy cập dữ liệu nào trong SQL Server 8K, thông tin sẽ được đọc.

Các trang dữ liệu chỉ có thể chứa thông tin từ một bảng và bố cục của một trang được ghi chép đầy đủ trên MSDN

Thực tế là SQL Server sẽ luôn đọc một trang dữ liệu hoàn chỉnh cũng cho bạn biết lý do tại sao nó thích sử dụng khóa cấp độ trang hơn. Hàm ý của việc khóa cấp độ trang là bạn có thể khóa nhiều dữ liệu hơn bạn nghĩ.

Ví dụ:giả sử chúng ta có một bảng với tổng kích thước bản ghi là 1024 byte với chỉ mục được phân nhóm trên trường ID . Khi chúng tôi chạy truy vấn sau:SELECT * from MyTable (xlock) where ID = 123 không chỉ bản ghi đó sẽ bị khóa, mà (tùy thuộc vào trang điền) tối đa 3 bản ghi bổ sung cũng sẽ bị khóa.

Khi nào có được những ổ khóa này

Một truy vấn sẽ được phân tích cú pháp bởi trình quản lý truy vấn và các khóa yêu cầu sẽ được xác định và yêu cầu từ trình quản lý khóa. SQL Server sẽ cố gắng cân bằng giữa hiệu suất và sự cạnh tranh để xác định chiến lược khóa.

SQL Server cũng tuân theo một hệ thống "khóa leo thang" sẽ làm giảm mức độ chi tiết của việc khóa khi có hơn 5000 khóa thuộc một loại nhất định đang được sử dụng. Xem bài viết này về báo cáo khóa để biết thêm thông tin.

Hành vi này có thể được điều chỉnh bằng cách sử dụng gợi ý khóa căng thẳng về gợi ý , trong một truy vấn, bạn có thể chỉ định cho mỗi bảng loại khóa mà bạn muốn. SQL Server sẽ cố gắng đáp ứng yêu cầu của bạn, nhưng nó sẽ vẫn áp dụng báo cáo khóa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nhóm sql theo so với riêng biệt

  2. Salesforce SOQL từ SQL Server

  3. Khắc phục “Lỗi tràn số học chuyển đổi int thành kiểu dữ liệu số” trong SQL Server

  4. Tên chính xác cho một bảng kết hợp (mối quan hệ nhiều-nhiều)

  5. SQL Server 2016:sys.dm_exec_osystem_stats