2010-03-22 27 views
6

Để bắt đầu, tôi không có DBA và tôi đang làm việc để xây dựng lại các chỉ mục.Xây dựng lại các chỉ mục không thay đổi phân mảnh% cho các chỉ mục không độc quyền

Tôi đã sử dụng tập lệnh TSQL tuyệt vời từ msdn để thay đổi chỉ mục dựa trên phần trăm fragmente được trả về bởi dm_db_index_physical_stats và nếu phần trăm phân đoạn lớn hơn 30 thì thực hiện REBUILD hoặc thực hiện REORGANIZE.

Những gì tôi phát hiện ra, trong lần lặp đầu tiên, có 87 bản ghi cần phân mảnh. Tôi chạy tập lệnh và tất cả 87 chỉ mục (nhóm & nonclustered) đã được xây dựng lại hoặc được lập lại. Khi tôi nhận được các số liệu thống kê từ dm_db_index_physical_stats, vẫn còn 27 hồ sơ cần phân mảnh và tất cả các đề tài đều KHÔNG CHỈ ĐẠO Index. Tất cả các chỉ mục Clustered đã được sửa.

Bất kể có bao nhiêu lần tôi chạy tập lệnh để chống phân mảnh các bản ghi này, tôi vẫn có cùng các chỉ mục để chống phân mảnh và hầu hết trong số chúng có cùng phân đoạn%. Không có gì thay đổi sau này.

Lưu ý: Tôi không thực hiện bất kỳ chèn/cập nhật/xóa nào cho các bảng trong các lần lặp lại này. Tuy nhiên việc xây dựng lại/tổ chức lại không dẫn đến bất kỳ thay đổi nào. thông tin

thêm: Sử dụng SQL 2008 Script như có sẵn trong MSDN http://msdn.microsoft.com/en-us/library/ms188917.aspx

Ông có thể vui lòng giải thích tại sao những 27 hồ sơ của các chỉ số phi nhóm không được thay đổi/sửa đổi?

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao.

Nod

+0

Bạn có thể pelase cung cấp đầu ra với một số thống kê của một trong số 27 ví dụ không? – TomTom

+0

Tôi đã dán dưới một trong các kết quả chỉ mục cho 3 lần lặp lại. lần lặp đầu tiên đã thay đổi phân mảnh% một chút khi ở vị trí thứ 2 và thứ 3 không có tác động. Index = [IX_BatchNumber] Fragment% được trả về bởi dm_db_index_physical_stats Iteration 1 = 52,6315789473684 Iteration 2 = 41,1764705882353 Iteration 3 = 41,1764705882353 \t Có những trường indteresting khác, nơi ở trước khi defrag rất đầu tiên phân mảnh% giá trị là 30 và ở bên cạnh nó nhảy lên đến 40 và ở đó mãi mãi. Nhưng điều này đã xảy ra chỉ với một vài hồ sơ. Cảm ơn. – Noddy

Trả lời

12

SQL Server sẽ không tạo lại các chỉ mục không đủ lớn. Có một cái nhìn về fragment_count (đó là một trong các trường trong khung nhìn sys.dm_db_index_physical_stats), nó có thể khá thấp đối với 27 chỉ mục đó.

+0

Tôi đang gặp vấn đề tương tự với chỉ mục có hơn một triệu trang và bị phân đoạn 31%. Thực sự muốn có một câu trả lời. –

+0

FYI xem câu trả lời trên dba.stackexchange.com tại đây: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

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