Tablodaki Dizinlerin kullanılmadığını belirleme


12

Yabancı dizinleri bulmaya çalışmak için bu komut dosyasını çalıştırıyorum

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

Last_user_seek / scan / lookup tüm null olduğunda, son yeniden başlatmadan bu yana hiçbir kullanıcı dizini kullanmadığını biliyorum. Ama merak ediyorum system_scans / lookups / seek… nedir? Çünkü belirli bir masada kullanıcı etkinliği olmayan 5 tane buldum, ancak 10 gün önce bir sistem etkinliği vardı. Herkes hangi sistem taramalarının / aramalarının / aramalarının olabileceği konusunda bir fikriniz var mı? Bu tablolar gerçekten fazla endeksli görünüyor ve ben yağ kırpmak istiyorum.


Aynı soruyu sqlservercentral üzerine gönderdim ve orada da yanıt aldım. Konu bağlantısı: sqlservercentral.com/Forums/Topic1205983-391-3.aspx?Update=1
Aushin


@Yukarıda yayınladığınız bağlantıyı paylaşmak, kimsenin gerçekten takip etmek istemediği duygu ve yan görevlerle dolu son derece dağınık bir tartışmaya yol açıyor.
Magier

Yanıtlar:


10

Dizin bakımı (yeniden oluşturma / yeniden düzenleme) ve DBCC CHECKDB etkinliği büyük olasılıkla istatistik güncellemeleri. Herhangi bir planlanmış bakım yapılandırıldı mı?

Kullanıcı erişimi yoksa, bunları depolayın. Artık kullanılmadıklarına karar verdiğiniz zaman çerçevesine dikkat edin. Örneğin haftalık veya aylık raporlama görevleri var mı?

Arama yaparken, yinelenen dizinler için de araştırma yapın.

Düzenleme: SSC bağlantısı ile ilgili

İş parçacığındaki hızlı bir taramadan, SSC halkının benzer düşünceleri vardı. Bununla birlikte, bu indekslerin olası "ara sıra" kullanımı konusunda daha temkinli bir tavır alırlar, birinin onları bir nedenden dolayı oraya koyduğu pozisyonunu, mükemmel makul bir argümanı alırlar. Karşı argüman, çoğu zaman bunun tam tersidir, biri onları oraya koyar çünkü bunun doğru bir şey olduğunu düşündüler , ancak anlama eksikliği veya test eksikliği nedeniyle değildi.

Kullanılmayan ve çoğaltılan dizinleri bırakmaktan başka bir şey yapmadan birkaç sistemi eşimden geri getirdim. Aşırı endeksleme kaosa neden olabilir.

Bu sizin sisteminizdir, bu dizinleri yerinde bırakma veya bırakma risklerini anlamanız ve tartmanız gerekir. Bırakmaya devam etmeye karar verirseniz, ne yaptığınızı, neden yaptığınızı belgeleyin, dizinleri komut dosyası haline getirin ve ilgili tüm taraflara yayınlayın.


Bu konuda +1 - Eminim Mark'ın bahsettiği faaliyetler. Sizi ilgilendirecek hiçbir şey yok - aşağıdaki ek cevapta genişletilmiş.
Mike Walsh

Bunun için teşekkürler. Ayrıca sqlservercentral bu konuda bir iplik vardı. Orijinal sorumda söylediklerinin bağlantısını yayınlayacağım.
Aushin

9

Glenn Berry, eksik dizinlerinizi bulmanıza yardımcı olacak bazı harika senaryolar yazdı. Bazı tahminleri sizin için görevden alan senaryolarını kullanmanızı öneririm. Bu komut dosyaları yalnızca boş veya 0 kullanıcı aramaları / taramalar / aramalar aramakla kalmaz, aynı zamanda okuma etkinliği ve yazma etkinliği arasında büyük bir eğri olan dizinleri de arar ve muhtemelen yine de düşerek daha iyi genel performansa neden olur. Onun komut kontrol ediyorum - bu bir başlangıç olsun onun görevine .

Sistem faaliyeti için endişelenmezdim. Bu, dizinleri kaldırırsanız daha da kötüleşecek bir şey değildir, aslında yalnızca var olduğu için bu dizinde gerçekleşen etkinlik olabilir. Önem verdiğiniz en önemli şey, kullanıcı okuma etkinliği ve kullanıcı yazma etkinliği ve bunu dengelemek.


5

Dizinlerin, kullanılmasa bile Sorgu Optimize Edici'ye yararlı bilgiler sağladığını unutmayın. Örneğin, Uniqueness'in etkisi üzerine epeyce şey yaptım. Benzersiz bir dizini arama veya tarama yapmadığı için kaldırırsanız, yine de performansı olumsuz yönde etkileyebilirsiniz.


Harika bir nokta ve ben Glenn'in senaryolarının benzersiz kısıtlar aradığına inanıyorum. Onun değilse, belki de farklı bir setse, bunu araştırmam gerekecek.
Mike Walsh

0

Herkesin belirttiklerine ek olarak, referans verilen FK sütunlarına karşı dizinler hiçbir zaman arama veya tarama gösteremez, ancak kapakların altında kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.