SORU
19 Ocak 2010, Salı


Ne kadar büyük bir SQL Server veritabanı nesneleri bulmak için?

Nasıl SQL Server bir veritabanı içinde büyük nesneleri bulma hakkında gitmek istiyorsunuz? İlk olarak, tablolar (ve endeksleri ile ilgili) belirli bir tablodaki satır olan en büyük ve belirleyici en büyük (BLOB, ikili veri depoluyoruz) hangi belirleyerek?

Veritabanı analizi bu tür bir yardım için orada herhangi bir alet var mı? Ya da sistem tabloları karşı kaçabilirim bazı basit sorgu var mı?

CEVAP
19 Ocak 2010, Salı


Ben kullanarak bu SQL komut dosyası (hangi var, birileri bir yerlerde - yeniden kim geldi) için yaş ve faydası oldu bana biraz anlayış ve belirleyici boyutu endeksleri ve tablolar:

SELECT 
    t.NAME AS TableName,
    i.name as indexName,
    sum(p.rows) as RowCounts,
    sum(a.total_pages) as TotalPages, 
    sum(a.used_pages) as UsedPages, 
    sum(a.data_pages) as DataPages,
    (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB, 
    (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB, 
    (sum(a.data_pages) * 8) / 1024 as DataSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
WHERE 
    t.NAME NOT LIKE 'dt%' AND
    i.OBJECT_ID > 255 AND   
    i.index_id <= 1
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name 
ORDER BY 
    object_name(i.object_id) 

Tabii ki, başka bir sıralama kriteri, örneğin kullanabilirsiniz

ORDER BY SUM(p.rows) DESC

en çok satırı olan bir tablo almak, ya da

ORDER BY SUM(a.total_pages) DESC

çoğu sayfaları (8 K blok) ile tablolar için kullanılır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • jcortes187

    jcortes187

    24 Mart 2006
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010