Profile

Click to view full profile
Hi, I'm Veerapat Sriarunrungrueang, an expert in technology field, especially full stack web development and performance testing.This is my coding diary. I usually develop and keep code snippets or some tricks, and update to this diary when I have time. Nowadays, I've been giving counsel to many well-known firms in Thailand.
view more...

Friday, January 10, 2014

Calculate Indexes size in SQL Azure

Why need to calculate size for indexes? It's simply because in Azure management portal show only the size of raw data not for indexes which indexes size is also included to count them as total storage used. I faced this problem during spamming data on 1GB size of SQL Azure. In my management portal show around 600MB is used but when updating the indexes, it show message like 'The database has reached its size quota' and receive an error code 40544. This problem may occurred depends on your indexes size growth rate. So, in order to track the size of our indexes use the following command to check:
SELECT (SUM(reserved_page_count) * 8192) / 1024 / 1024 AS DbSizeInMB
FROM    sys.dm_db_partition_stats
To track the size for each indexes, use the command below instead:
DECLARE @SizeInBytes bigint
SELECT @SizeInBytes =
(SUM(reserved_page_count) * 8192)
    FROM sys.dm_db_partition_stats

SELECT idx.name, SUM(reserved_page_count) * 8192 'bytes'
FROM sys.dm_db_partition_stats AS ps
    INNER JOIN sys.indexes AS idx ON idx.object_id = ps.object_id AND idx.index_id = ps.index_id
WHERE type_desc = 'NONCLUSTERED'
GROUP BY idx.name
ORDER BY 2 DESC
References:

No comments:

Post a Comment