2010-08-02 15 views
5

Giới hạn sự hiểu biết của tôi về cách cơ sở dữ liệu lưu trữ khóa chính là btree dựa trên khóa được nhóm với mỗi nút lưu trữ phần còn lại của các cột.SQL Server lưu trữ khóa tổng hợp chính như thế nào?

Tôi chưa cập nhật kiến ​​thức này từ trường đại học thế kỷ trước và rất muốn biết SQL Server lưu trữ khóa chính tổng hợp như thế nào so với một khóa chính.

Có ai có thể giúp chỉ cho tôi một số chi tiết về điều này không?

+2

Tôi không có thời gian để đưa ra câu trả lời đúng nhưng sẽ chỉ đề cập đến 3 khả năng khác nhau để xem xét ở đây (1) PK là chỉ số nhóm (2) PK là chỉ số không nhóm trên heap (3) PK là một chỉ số không nhóm trên một bảng với một chỉ số nhóm khác. –

+0

Vì vậy, chỉ số nhóm là lưu trữ, không phải là PK. Tôi đoán tôi đã không nghĩ về những thứ này như đồng nghĩa nữa. – Nat

Trả lời

4

Khóa tổng hợp chính xác giống như một cột, một cột thông thường, nhưng dài hơn và bao gồm nhiều giá trị. Hãy xem xét bạn có một B-Tree trên một cột duy nhất, nói A. Các trang không lá có chứa các khe với các giá trị của một cột, và con trỏ đến các trang lá. Các trang lá chứa các vị trí với cột A giá trị (khóa), tiếp theo là tất cả các cột khác của hàng. Khóa tổng hợp giống hệt nhau, nhưng giá trị trong các vị trí sẽ là giá trị tổng hợp, theo thứ tự chúng được khai báo trong khóa.

Có mô tả tuyệt vời về nội bộ của trang dữ liệu SQL Server tại Anatomy of a Page. Ngoài ra, Chương 6 từ cuốn sách SQL 7.0 cũ của Kelan Delaney có sẵn trực tuyến trên Technet: Tables. Vẫn là một nguồn tài nguyên tuyệt vời, những điều cơ bản vẫn áp dụng cho SQL 2008 R2 (những thứ được thay đổi chủ yếu là xung quanh loại tối đa và cài đặt nén, nhưng phần lớn thông tin vẫn hợp lệ).

Các vấn đề liên quan