Lập chỉ mục cụm là bây giờ phải - tại sao?


9

Trước đó, đã không có kết luận đối với tôi về các cuộc tranh luận / thảo luận về việc có nên (luôn luôn) tham gia / tránh các chỉ số phân cụm hay không.

Chà, tôi hiểu rằng đôi khi chúng được sử dụng với mục đích và bối cảnh cụ thể + cụ thể.

Yêu cầu chỉ mục cụm cơ sở dữ liệu SQL Azure :

"SQL Azure không hỗ trợ các bảng mà không có các chỉ mục được nhóm

không phù hợp với các kết luận, lý do và giải thích trước đây.

Lý do là gì, mà tôi đã bỏ lỡ từ các giải thích trước đây, về sự áp đặt cứng nhắc của các chỉ số cụm mà không có bất kỳ ngoại lệ?


4
SQL Azure khác với SQL Server như bạn biết. Azure là một cơ sở dữ liệu phân tán, lưu trữ dữ liệu của bạn trên nhiều máy vật lý. Đó là lý do tại sao.

1
Lưu ý rằng trong v12 của Dịch vụ cơ sở dữ liệu SQL Azure, bạn có thể có một bảng mà không có chỉ mục được nhóm.
Troy Hunt

Câu trả lời:


11

Đọc bên trong SQL Azure :

SQL Azure cung cấp cơ sở dữ liệu logic để lưu trữ dữ liệu ứng dụng. Trong thực tế, dữ liệu của mỗi thuê bao thực sự được lưu trữ nhiều lần, được sao chép trên ba cơ sở dữ liệu SQL Server được phân phối trên ba máy chủ vật lý trong một trung tâm dữ liệu. Nhiều người đăng ký có thể chia sẻ cùng một cơ sở dữ liệu vật lý.

Các khóa được nhóm là bắt buộc để ba bản sao dữ liệu của bạn có thể được giữ đồng bộ. Khóa W / oa, không thể biết hàng nào đã được cập nhật. Heaps (bảng w / oa clustered index) chỉ có 'khóa' vật lý (fileid: pageid: slot) và vì 3 bản sao của cơ sở dữ liệu logic chia sẻ cơ sở dữ liệu vật lý với các cơ sở dữ liệu logic khác, địa chỉ vật lý trên một máy chủ không có ý nghĩa gì trên máy chủ khác bản sao, do đó đống không thể được sao chép.


Khóa (logic) không phải nằm trong một chỉ mục được nhóm. Nó có thể không độc quyền. Có lẽ lý do thực sự tại sao một chỉ số cụm (có lẽ là duy nhất?) Được yêu cầu là các đống sử dụng RID trong khi các chỉ mục cụm duy nhất thì không. Đó có phải ý của bạn?
nvogel

3
Từ tài liệu được liên kết: "Công nghệ sao chép và tính sẵn sàng cao trong SQL Azure dựa trên việc sao chép các hàng B-Tree." Vì vậy, ngay cả khi một heap sẽ có khóa NC, bạn chỉ có thể sao chép NC, chứ không thể sao chép heap.
Remus Rusanu


1

Azure là một hệ thống dựa trên đám mây phân tán trên các máy chủ từ xa. Dữ liệu có thể sẽ được lưu trữ trên nhiều ổ đĩa / máy chủ và sẽ cực kỳ không hiệu quả khi thực hiện việc này trên một đống (vì hệ thống sẽ cần biết máy nào để kiểm tra và nếu không có chỉ mục cụm thì đây là hoạt động sử dụng nhiều tài nguyên) .

Chỉ mục được nhóm cung cấp một tra cứu cho tất cả các hàng và tất cả các chỉ mục khác trên bảng, do đó, không có bất kỳ thao tác nào trong phương vị sẽ là quét bảng trên nhiều máy.


2
Điều đó thể đúng, nhưng hiện tại thì không. Đọc bài viết tôi đã liên kết, nó giải thích cách định tuyến yêu cầu hoạt động và tại sao các truy vấn của bạn luôn chạy trên một hộp duy nhất và không bao giờ trải rộng trên nhiều máy chủ. I E. không có shending.
Remus Rusanu
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.