Xác định rằng các chỉ mục trên một bảng không được sử dụng


12

Tôi đã chạy tập lệnh này để cố gắng tìm các chỉ mục không liên quan

select o.name as TableName, i.name as IndexName, p.reserved_page_count * 8.0 / 1024 as     SpaceInMB, s.*
from     sys.dm_db_index_usage_stats s
inner join sys.objects o on s.object_id = o.object_id
inner join sys.indexes i on i.index_id = s.index_id and i.object_id = o.object_id
inner join sys.dm_db_partition_stats p on i.index_id = p.index_id and o.object_id =      p.object_id
where o.name = TableName

Tôi biết rằng khi last_user_seek / scan / lookup đều null, không có người dùng nào sử dụng chỉ mục kể từ lần khởi động lại lần trước. Nhưng tôi đang tự hỏi system_scans / tra cứu / tìm kiếm là gì? Bởi vì trên một bảng nhất định, tôi thấy 5 cái không có hoạt động của người dùng, nhưng một cái có hoạt động hệ thống 10 ngày trước. Có ai có cái nhìn sâu sắc về việc quét / tìm kiếm / tra cứu hệ thống có thể là gì không? Những bảng này dường như thực sự được lập chỉ mục quá mức và tôi muốn cắt giảm chất béo.


Tôi đã đăng câu hỏi tương tự trên sqlservercentral và cũng nhận được phản hồi ở đó. Liên kết đến chủ đề là: sqlservercentral.com/Forums/Topic1205983-391-3.aspx?Update=1
Aushin


@Aushin liên kết bạn đã đăng ở trên dẫn đến một cuộc thảo luận cực kỳ lộn xộn đầy cảm xúc và nhiệm vụ phụ không ai thực sự muốn theo dõi.
Magier

Câu trả lời:


10

Bảo trì chỉ mục (xây dựng lại / sắp xếp lại) và hoạt động DBCC CHECKDB rất có thể, có thể là các cập nhật thống kê. Bất kỳ bảo trì theo lịch trình cấu hình?

Nếu không có quyền truy cập của người dùng, hãy bin họ. Chỉ cần lưu tâm đến khung thời gian mà bạn quyết định chúng không còn được sử dụng. Có bất kỳ nhiệm vụ báo cáo hàng tuần hoặc hàng tháng chẳng hạn?

Trong khi bạn đang tìm kiếm, hãy tìm kiếm các chỉ mục trùng lặp .

Chỉnh sửa: liên quan đến liên kết SSC

Từ việc quét nhanh qua các chủ đề, có vẻ như dân gian SSC cũng có suy nghĩ tương tự. Tuy nhiên, họ đang có lập trường thận trọng hơn về việc sử dụng các chỉ số "thỉnh thoảng" có thể này, lấy vị trí mà ai đó đặt chúng ở đó vì một lý do, một lý lẽ hoàn toàn hợp lý. Đối số phản biện là tất cả quá thường xuyên, nó hoàn toàn ngược lại, ai đó đã đặt chúng ở đó bởi vì họ nghĩ rằng đó là điều đúng đắn nhưng thông qua việc thiếu hiểu biết hoặc thiếu kiểm tra, thì không.

Tôi đã đưa một vài hệ thống trở lại từ bờ vực bằng cách không làm gì khác hơn là bỏ các chỉ mục không sử dụng và trùng lặp. Quá chỉ mục có thể gây ra sự hỗn loạn.

Đó là hệ thống của bạn, bạn cần hiểu và cân nhắc những rủi ro khi để các chỉ số này vào vị trí hoặc loại bỏ chúng. Nếu bạn quyết định tiếp tục thả, hãy ghi lại những gì bạn làm, tại sao bạn lại làm điều đó, viết kịch bản các chỉ mục và xuất bản cho tất cả các bên quan tâm.


+1 về điều này - Tôi chắc chắn đó là những hoạt động mà Mark đã đề cập. Không có gì liên quan đến bạn - mở rộng về điều đó trong một câu trả lời bổ sung dưới đây.
Mike Walsh

Cảm ơn vì điều đó. Tôi cũng đã có một chủ đề trên sqlservercentral về điều này. Tôi sẽ đăng liên kết đến những gì họ nói trong câu hỏi ban đầu của tôi.
Aushin

9

Glenn Berry đã viết một số kịch bản tuyệt vời để giúp bạn tìm các chỉ mục còn thiếu của mình. Tôi đề nghị sử dụng các kịch bản của anh ta để đưa ra một số công việc đoán ra cho bạn. Các tập lệnh này không chỉ tìm kiếm null hoặc 0 tìm kiếm / quét / tìm kiếm người dùng mà còn tìm kiếm các chỉ mục có độ lệch lớn giữa hoạt động đọc và hoạt động viết, có thể vẫn dẫn đến hiệu suất tổng thể tốt hơn bằng cách giảm. Tôi sẽ kiểm tra kịch bản của anh ấy - bạn có thể bắt đầu bài đăng này của anh ấy .

Tôi sẽ không lo lắng về hoạt động của hệ thống. Đó không phải là điều sẽ trở nên tồi tệ hơn nếu bạn loại bỏ các chỉ mục, thực tế nó có thể là hoạt động chỉ xảy ra trên chỉ mục đó vì nó tồn tại. Điều chính bạn quan tâm là hoạt động đọc của người dùng và hoạt động viết của người dùng và cân bằng điều đó.


5

Hãy nhớ rằng các chỉ mục cũng cung cấp thông tin hữu ích cho Trình tối ưu hóa truy vấn, ngay cả khi chúng không được sử dụng. Tôi đã làm khá nhiều thứ về tác động của Tính duy nhất, chẳng hạn. Nếu bạn xóa một chỉ mục duy nhất vì nó không tìm kiếm hoặc quét, bạn vẫn có thể ảnh hưởng xấu đến hiệu suất.


Điểm tuyệt vời và tôi tin rằng các kịch bản của Glenn tìm kiếm các ràng buộc độc đáo. Nếu không phải anh ta, có lẽ là một bộ khác, tôi sẽ phải nghiên cứu nó.
Mike Walsh

0

Ngoài những gì mọi người khác đã nêu, các chỉ mục chống lại các cột FK được tham chiếu có thể không bao giờ hiển thị tìm kiếm hoặc quét nhưng được sử dụng dưới bìa.

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.