尽管估计直线和表格大小是相当简单的数学运算,但我们发现猜测每个索引将占用多少空间(对于给定的表大小)颇具挑战性。我们可以学习哪些领域来计算指数的更好估计值和增长率?我如何估计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. 如何估算Oracle索引的大小?
- 3. SQL Server的单个索引大小
- 4. lucene估计索引大小,搜索时间
- 5. 如何确定SQL Server中索引的大小?
- 6. SQL Server 2005 - 如何找出特定索引的磁盘大小
- 7. 如何检查SQL Server中索引视图的大小?
- 8. 的SQL Server索引设计
- 9. 我如何签署SQL Server索引
- 10. 估计SQL数据库大小
- 11. 如何估计SQL Server数据库的服务器大小要求?
- 12. SQL Server索引
- 13. SQL Server索引
- 14. SQL Server索引
- 15. 估计行大小HBase/HyperTable
- 16. 估计树的大小
- 17. HAWQ表大小估计
- 18. 使SQL Server索引为小数字
- 19. 索引SQL SERVER中的大表
- 20. SQL Server - 计算列上的索引?
- 21. 如何确定SQL Server 2008 R2上的全文索引的大小?
- 22. sql server nvarchar大小?
- 23. 如何管理SQL Server日志大小
- 24. SQL SERVER中的极大表应该如何索引?
- 25. SQL Server索引如何工作
- 26. 如何显示SQL Server表索引?
- 27. SQL Server全文索引如何增长?
- 28. 索引如何帮助加入SQL Server
- 29. 如何估计或计算ArrayBlockingQueue的大小
- 30. SQL Server 2008与SQL Server 2008 Express大小
请问您可以参考一些文档的这些信息?谢谢 – icelava 2008-10-07 09:06:48