Phân vùng trên một nhóm duy nhất


10

Tôi có một số bảng rất lớn trong cơ sở dữ liệu của mình, nhưng một lượng lớn dữ liệu này là "cũ".

Do hoàn cảnh nằm ngoài tầm kiểm soát của tôi, tôi không được phép xóa dữ liệu "cũ" này. Hạn chế khác là tôi không thể sửa đổi cơ sở dữ liệu, nghĩa là thêm các nhóm tệp vào nó. Cách mọi thứ đứng ngay bây giờ, mọi thứ nằm trong PRIMARYnhóm tập tin.

Tôi đã suy nghĩ để phân vùng các bảng này thành một vài phân vùng, chẳng hạn như "mới", "cũ", "lưu trữ" và tương tự. Tôi có một cột "trạng thái" tôi muốn sử dụng cho mục đích này.

Với kịch bản được mô tả và các hạn chế, tôi đã tự hỏi nếu phân vùng có ý nghĩa gì ở đây không. Nói cách khác, nếu bảng của tôi được phân vùng theo cách này, nhưng tất cả các phân vùng nằm trên cùng một nhóm, SQL Server sẽ đủ thông minh để tìm khu vực đặc biệt đó trong tệp bên dưới nơi dữ liệu "mới" của tôi nằm và không chạm vào khu vực có dữ liệu "cũ"?

Nói cách khác, nếu giả sử, 80% dữ liệu của tôi là "cũ". SQL Server có cơ chế tránh truy cập 100% các tệp bên dưới không và chỉ truy cập 20% chứa dữ liệu "mới" (giả sử, tất nhiên, tôi chỉ định cột phân vùng của mình trong WHEREmệnh đề của các truy vấn).

Tôi đoán để trả lời điều này, người ta sẽ cần phải hiểu cách phân vùng được thực hiện trong nội bộ. Tôi đánh giá cao bất kỳ con trỏ.

Câu trả lời:


6

Có hai lợi thế để phân vùng một bảng trong cùng một nhóm:

  1. Cho phép các phần của một chỉ mục lớn được xây dựng lại tăng dần, cho phép bảo trì hiệu quả hơn. Xem lại ALTER INDEX [foo] REBUILD PARTITION=nđể biết thêm chi tiết.
  2. Tận dụng loại bỏ phân vùng và (có thể) khóa cấp phân vùng để cải thiện bảo trì truy vấn. Tôi thảo luận về điều này trên blog của tôi .

Có một số điều cần lưu ý nếu bạn đang phân vùng.

  • Nếu bảng của bạn có một chỉ mục được nhóm (và nó thực sự nên), khóa phân vùng của bạn phải là một phần của chỉ mục được phân cụm.
  • Để tránh các vấn đề về hiệu suất, bạn nên căn chỉnh các phân vùng của mình. Điều này có nghĩa là tất cả các chỉ mục của bạn nên bao gồm khóa phân vùng của bạn, cho dù là bao gồm hay là một phần của chính chỉ mục.
  • Xây dựng lại chỉ mục cho các phân vùng đang ngoại tuyến trong các phiên bản hiện tại của SQL Server (2005-2012). Nếu các phân vùng của bạn lớn và việc xây dựng lại theo phân vùng, điều này có thể dẫn đến các vấn đề chặn.

Tôi khuyên bạn nên thực hiện một số nghiên cứu kỹ lưỡng về phân vùng trước khi thực hiện nó. Kendra Little có một danh sách tài nguyên tuyệt vời nơi bạn có thể bắt đầu.


Nếu tôi đã phân vùng chỉ mục Clustered, không phải tất cả các chỉ mục không được phân cụm đã chứa cột phân vùng như một trình định vị hàng?
Zikato

0

Câu trả lời là "có". Nó có một cơ chế trên bất kỳ truy vấn nào lọc các đầu vào dựa trên logic được sử dụng để xác định các phân vùng.

Tuy nhiên, bạn phải có bộ lọc thích hợp hoặc tất cả các phân vùng sẽ được quét. Điều này thường liên quan đến việc có các bộ lọc ngày (trong trường hợp của bạn) để chọn phân vùng.

Một cách để thực thi điều này là có các khung nhìn chỉ truy cập vào một phân vùng, với logic đúng trong khung nhìn.


Tôi tự hỏi mức tăng hiệu suất sẽ là bao nhiêu cho việc phân vùng vào cùng một đĩa vật lý ..
sotn
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.