儘管估計直線和表格大小是相當簡單的數學運算,但我們發現猜測每個索引將佔用多少空間(對於給定的表大小)頗具挑戰性。我們可以學習哪些領域來計算指數的更好估計值和增長率?我如何估計SQL Server索引大小
3
A
回答
6
索引頁面有一個標識數據頁的引言(7字節加上可變長度列的某些目錄信息,如果有的話)加上與表格數據大小相同的鍵值副本那些專欄。表中的每一行都有一個。指數較高的水平要小得多,通常小於葉子的1%,除非你要索引一個非常寬的關鍵。
填充因子留出一些空間,以便更新和插入不會產生過多的葉分離流量。
編輯:This MSDN link描述了頁面級別的結構,雖然它對單個索引行的格式稍微有點亮。 This presentation在某種程度上進入了磁盤日誌條目和數據頁面的物理格式。 This one更多細節,幷包括索引數據結構。數字和固定長度的列具有它在盒子上表示的大小;你將不得不估計varchar列的平均大小。
1
如果可能的話,我一般會從原表中取出1000條記錄, 將它們插入我自己的表中, 並用下面的腳本我有一個示例可以玩。
好吧,這是不準確的,但可以給我一個出發點。
--Find out the disk size of an index:
--USE [DB NAME HERE]
go
SELECT
OBJECT_NAME(I.OBJECT_ID) AS TableName,
I.name AS IndexName,
8 * SUM(AU.used_pages) AS 'Index size (KB)',
CAST(8 * SUM(AU.used_pages)/1024.0 AS DECIMAL(18,2)) AS 'Index size (MB)'
FROM
sys.indexes I
JOIN sys.partitions P ON P.OBJECT_ID = I.OBJECT_ID AND P.index_id = I.index_id
JOIN sys.allocation_units AU ON AU.container_id = P.partition_id
--WHERE
-- OBJECT_NAME(I.OBJECT_ID) = '<TableName>'
GROUP BY
I.OBJECT_ID,
I.name
ORDER BY
TableName
--========================================================================================
--http://msdn.microsoft.com/en-us/library/fooec9de780-68fd-4551-b70b-2d3ab3709b3e.aspx
--I believe that keeping the GROUP BY
--is the best option in this case
--because of sys.allocation_units
--can have 4 types of data inside
--as below:
--type tinyint
--Type of allocation unit.
--0 = Dropped
--1 = In-row data (all data types, except LOB data types)
--2 = Large object (LOB) data (text, ntext, image, xml, large value types, and CLR user-defined types)
--3 = Row-overflow data
--marcelo miorelli 8-NOV-2013
--========================================================================================
相關問題
- 1. 估計SQL Server中的表大小
- 2. 估計全文索引大小
- 3. 如何估算Oracle索引的大小?
- 4. SQL Server的單個索引大小
- 5. lucene估計索引大小,搜索時間
- 6. 如何確定SQL Server中索引的大小?
- 7. 如何檢查SQL Server中索引視圖的大小?
- 8. SQL Server 2005 - 如何找出特定索引的磁盤大小
- 9. 的SQL Server索引設計
- 10. 估計您的SQL Server數據庫中所有表的大小
- 11. 我如何簽署SQL Server索引
- 12. 估計SQL數據庫大小
- 13. 如何估計SQL Server數據庫的服務器大小要求?
- 14. postgres - 估計時間戳列的索引大小
- 15. 索引搜索估計行
- 16. 我該如何近似計算Solr索引大小
- 17. SQL Server索引
- 18. SQL Server索引
- 19. SQL Server索引
- 20. HAWQ表大小估計
- 21. 估計樹的大小
- 22. 估計行大小HBase/HyperTable
- 23. SQL Server Express上的索引是否會計入10gb數據庫大小限制?
- 24. 使SQL Server索引爲小數字
- 25. 計算sql server數據庫的大小
- 26. 小於或大於sql server中索引的運算符問題
- 27. SQL Server優化 - 索引與統計
- 28. SQL Server - 計算列上的索引?
- 29. SQL Server的非聚集索引設計
- 30. 索引SQL SERVER中的大表
請問您可以參考一些文檔的這些信息?謝謝 – icelava 2008-10-07 09:06:48