Tại sao không khóa leo thang cấp phân vùng mặc định?


7

Trong SQL Server, các khóa thường được leo thang từ hàng hoặc trang -> bảng. Bắt đầu với SQL Server 2008, một mức độ leo thang khóa mới đã được thêm vào - cấp độ phân vùng .

Tuy nhiên, điều này không được kích hoạt tự động cho các bảng được phân đoạn - theo mặc định, bảng được đặt để bỏ qua khóa phân vùng và đi ngay từ hàng hoặc trang -> bảng. Tại sao nó lại là vấn đề? Có một lý do tại sao tôi sẽ không muốn chuyển tất cả các bảng của tôi từ TABLEđến AUTOđể họ leo thang ổ khóa xuống mức phân vùng thay vì mức bảng?

Vì mặc định vẫn còn TABLE, tôi nghĩ rằng phải có điều gì đó tôi thiếu về nhược điểm của nó AUTO.


trong các khóa SQL Server không bao giờ được chuyển từ các hàng sang trang; nó luôn được leo thang từ các hàng đến bàn.
Người học SQL

@MartinSmith Cảm ơn bạn đã làm rõ - bạn học được điều gì đó mới mỗi ngày và bài viết được liên kết + một số Googling đã xác nhận rằng tôi đã nhầm! Tôi hiểu điều này, tại sao SQL Server sẽ thực hiện khóa cấp độ trang chứ không phải cấp độ hàng ngay lập tức (trước khi leo lên bảng)? Có vẻ như nó sẽ luôn bắt đầu bằng hàng, nhưng có lẽ trang có ý nghĩa hơn nếu tôi cập nhật một phạm vi thay vì một hàng (hoặc tập hợp con rất nhỏ của các hàng).
SqlRyan

@QueryKiwi: Cảm ơn bạn đã dọn dẹp - rõ ràng sự hiểu biết của tôi về việc leo thang khóa đã bị tắt một chút :)
SqlRyan

Câu trả lời:


7

BOL có câu trả lời - Nó không BẬT theo mặc định vì nó có thể làm tăng khả năng bế tắc.

Công cụ cơ sở dữ liệu không chuyển các khóa hàng hoặc phạm vi khóa thành khóa trang, mà chuyển trực tiếp chúng sang khóa bảng. Tương tự, khóa trang luôn được chuyển đến khóa bảng. Trong SQL Server 2008, việc khóa các bảng được phân đoạn có thể leo thang đến mức HoBT cho phân vùng được liên kết thay vì khóa bảng. Khóa cấp HoBT không nhất thiết phải khóa HoBTs được căn chỉnh cho phân vùng.

Các khóa cấp HoBT thường làm tăng sự tương tranh, nhưng gây ra nguy cơ bế tắc khi các giao dịch đang khóa các phân vùng khác nhau, mỗi khóa muốn mở rộng các khóa độc quyền của chúng sang các phân vùng khác. Trong các trường hợp hiếm hoi, độ chi tiết khóa BẢNG có thể hoạt động tốt hơn.


@MartinSmith Có vẻ như Paul cũng đưa dòng này vào bài viết bạn cung cấp ở trên: "Bạn có thể hỏi tại sao tùy chọn AUTO không phải là mặc định trong SQL Server 2008? Vì vậy, giống như với các cờ theo dõi leo thang khóa, hãy cẩn thận về việc bật tùy chọn AUTO trong SQL Server 2008. "
SqlRyan
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.