सवाल एसक्यूएल Azure टेबल आकार


Mssql2005 में जब मैं एमबी में तालिका का आकार प्राप्त करना चाहता हूं, तो मैं EXEC sp_spaceused 'table' का उपयोग करता हूं।

क्या कुछ क्वेरी या एपीआई का उपयोग कर SQL Azure में विशेष तालिका द्वारा उपयोग की जाने वाली जगह प्राप्त करने का कोई तरीका है?


44
2017-12-24 06:39


मूल




जवाब:


रयान डुन से http://dunnry.com/blog/CalculatingTheSizeOfYourSQLAzureDatabase.aspx

select    
      sum(reserved_page_count) * 8.0 / 1024 [SizeInMB]
from    
      sys.dm_db_partition_stats

GO

select    
      sys.objects.name, sum(reserved_page_count) * 8.0 / 1024 [SizeInMB]
from    
      sys.dm_db_partition_stats, sys.objects
where    
      sys.dm_db_partition_stats.object_id = sys.objects.object_id

group by sys.objects.name
order by sum(reserved_page_count) DESC

पहला व्यक्ति आपको एमबी में अपने डेटाबेस का आकार देगा और दूसरा एक ही करेगा, लेकिन आपके डेटाबेस में प्रत्येक ऑब्जेक्ट के लिए सबसे बड़ा सबसे छोटा आदेश दिया गया है।


112
2018-03-09 15:32



यह एसक्यूएल सर्वर पर sp_spaceUsed की तुलना में काफी छोटा आकार देता है (उदा। केवल 40% या तो)। क्या इसका कोई कारण है? यदि आप ओडीबीसी कनेक्शन का उपयोग कर रहे हैं, तो आप कैसे बता सकते हैं कि यह बैक एंड पर एज़ूर है? - Grahame Grieve
ट्रॉय - यह बहुत अच्छा काम किया !! धन्यवाद! - Rogala


यहां एक क्वेरी है जो आपको कुल आकार, पंक्तियों और प्रति पंक्ति बाइट्स तालिका द्वारा प्रदान करेगी:

select 
    o.name, 
    max(s.row_count) AS 'Rows',
    sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB',
    (8 * 1024 * sum(s.reserved_page_count)) / (max(s.row_count)) as 'Bytes/Row'
from sys.dm_db_partition_stats s, sys.objects o
where o.object_id = s.object_id
group by o.name
having max(s.row_count) > 0
order by GB desc

और यहां एक प्रश्न है जो ऊपर जैसा ही है लेकिन सूचकांक द्वारा इसे तोड़ देता है:

select  
    o.Name,
    i.Name,
    max(s.row_count) AS 'Rows',
    sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB',
    (8 * 1024* sum(s.reserved_page_count)) / max(s.row_count) as 'Bytes/Row'
from 
    sys.dm_db_partition_stats s, 
    sys.indexes i, 
    sys.objects o
where 
    s.object_id = i.object_id
    and s.index_id = i.index_id
    and s.index_id >0
    and i.object_id = o.object_id
group by i.Name, o.Name
having SUM(s.row_count) > 0
order by GB desc

6
2018-02-25 00:37





इस तरह आप शीर्ष पर बड़ा हो सकते हैं:

 SELECT  sys.objects.name,
            SUM(row_count) AS 'Row Count',
            SUM(reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)'
    FROM sys.dm_db_partition_stats, sys.objects
    WHERE sys.dm_db_partition_stats.object_id = sys.objects.object_id
    GROUP BY sys.objects.name
    ORDER BY [Table Size (MB)] DESC

स्रोत


5
2017-10-22 14:42



योग (row_count) भ्रामक है क्योंकि यह सूचकांक में प्रत्येक पंक्ति के लिए 1 पंक्ति की गणना करेगा। - tster