Làm cách nào để biết khi nào cần phân mảnh cơ sở dữ liệu SQLServer của tôi?


9

Cách thực hành tốt nhất để đo phân mảnh / hiệu suất của cơ sở dữ liệu SQLServer và xác định thời điểm phân mảnh bảng cơ sở dữ liệu SQLServer là gì?

Tôi quan tâm nhất đến việc tìm hiểu các số liệu hữu ích là gì và mức độ suy giảm hiệu suất sẽ kích hoạt phân mảnh.

Câu trả lời:


22

Tôi chắc chắn sẽ có một số câu trả lời thú vị cho vấn đề này, vì có rất nhiều sự bất đồng về số liệu cần xem xét. Tôi đã viết DBCC INDEXDEFRAG, SHOWCONTIG và thiết kế thay thế chúng cho năm 2005, cộng với việc viết nội dung Sách trực tuyến, vì vậy tôi sẽ đưa ra quan điểm của tôi và giải thích các con số trong Sách trực tuyến và trình hướng dẫn kế hoạch bảo trì cho năm 2005 mà tôi đã chọn.

Hai số liệu tốt nhất để xem xét phân mảnh chỉ mục là: phân mảnh trung bình 1) (2005) tính theo phần trăm / (2000) phân mảnh quét logic 2) (2005) mật độ trang trung bình / (2000) byte miễn phí trên mỗi trang

Chúng áp dụng như nhau cho các chỉ mục được nhóm và không bao gồm.

1 là đo mức độ phân mảnh logic. Đây là khi thứ tự logic của các trang ở cấp độ lá của một chỉ mục không khớp với thứ tự vật lý. Điều này ngăn Công cụ lưu trữ thực hiện việc đọc hiệu quả trong quá trình quét phạm vi. Vì vậy, # 1 ảnh hưởng đến hiệu suất quét phạm vi, không phải hiệu suất tra cứu đơn lẻ.

2 là đo xem có bao nhiêu không gian lãng phí trên mỗi trang ở cấp độ lá của một chỉ mục. Không gian bị lãng phí có nghĩa là bạn đang sử dụng nhiều trang hơn để lưu trữ các bản ghi, điều đó có nghĩa là có nhiều không gian đĩa hơn để lưu chỉ mục, nhiều IO hơn để đọc chỉ mục và nhiều bộ nhớ hơn để giữ các trang trong bộ nhớ trong vùng đệm.

Ngưỡng? Nguyên tắc chung của tôi là phân mảnh dưới 10%, không làm gì cả. 10-30%, thực hiện ALEX INDEX ... REORGANIZE (2005) / DBCC INDEXDEFRAG (2000). Hơn 30%, thực hiện ALTER INDEX ... REBUILD (2005) / DBCC DBREINDEX (2000). Đây là những khái quát hoàn chỉnh và các ngưỡng cho bạn sẽ thay đổi.

Để tìm ngưỡng của bạn, hãy thực hiện một số theo dõi hiệu suất khối lượng công việc theo các mức phân mảnh và quyết định khi suy giảm hiệu suất quá nhiều. Tại thời điểm đó, bạn sẽ cần tại địa chỉ phân mảnh. Có một hành động cân bằng giữa việc sống với sự phân mảnh và đánh vào tài nguyên của việc loại bỏ nó.

Tôi đã không đụng đến ở đây về sự đánh đổi giữa hai phương pháp loại bỏ phân mảnh, những thứ như FILLFACTOR / PADINDEX để cố gắng giảm thiểu phân mảnh và giảm phân mảnh, thay đổi lược đồ / mẫu truy cập để giảm bớt phân mảnh hoặc các loại kế hoạch bảo trì khác nhau .

Ồ, btw, tôi luôn khuyên bạn không nên bận tâm về sự phân mảnh trong các chỉ mục có ít hơn 1000 trang. Điều này là do chỉ số có lẽ chủ yếu là cư dân bộ nhớ (và vì mọi người đã yêu cầu một số và tôi đã phải đưa ra một số).

Bạn có thể đọc thêm về điều này trong bài viết trên Tạp chí TechNet của tôi về bảo trì cơ sở dữ liệu tại http://technet.microsoft.com/en-us/magazine/cc671165.aspx , trong whitepaper dựa trên 2000 về chỉ số chống phân mảnh tốt nhất tôi đã giúp viết http://technet.microsoft.com/en-us/l Library / cc966523.aspx , và trên blog của tôi dưới danh mục Phân mảnh tại http://www.sqlskills.com/BLOGS/PAUL/carget/Frag sắc.aspx .

Tôi nghĩ rằng tôi đã trả lời quá mức, nhưng đây là một trong những nút nóng của tôi. Hi vọng điêu nay co ich :-)

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.