我有一个SQL 2008 R2数据库,其上有一些表格,其中一些表格定义了全文索引。我想知道如何确定特定表的索引大小,以控制和预测它的增长。如何确定SQL Server 2008 R2上的全文索引的大小?
有没有办法做到这一点?
我有一个SQL 2008 R2数据库,其上有一些表格,其中一些表格定义了全文索引。我想知道如何确定特定表的索引大小,以控制和预测它的增长。如何确定SQL Server 2008 R2上的全文索引的大小?
有没有办法做到这一点?
目录视图sys.fulltext_index_fragments
会跟踪每个片段的大小,而不管目录如何,因此您可以采用SUM
这种方式。这假定每个表格的一个全文索引的限制将保持这种情况。以下查询将再次获取数据库中每个全文索引的大小,而不管目录如何,但如果您只关心特定表,则可以使用WHERE
子句。
SELECT
[table] = OBJECT_SCHEMA_NAME(table_id) + '.' + OBJECT_NAME(table_id),
size_in_KB = CONVERT(DECIMAL(12,2), SUM(data_size/1024.0))
FROM sys.fulltext_index_fragments
-- WHERE table_id = OBJECT_ID('dbo.specific_table_name')
GROUP BY table_id;
另请注意,如果碎片数很高,您可能会考虑重新组织。
如果你是一个特定的目录 使用SSMS 后 - 的Clik上[数据库]和扩大对象 - 点击【贮藏】 - 右键单击{特定的目录} - 选择Propertie并单击。 一般TAB,你会找到的目录大小=“NN”
我用类似这样的东西(这也将计算XML-索引的大小,...如果存在的话)
SELECT S.name,
SO.name,
SIT.internal_type_desc,
rows = CASE WHEN GROUPING(SIT.internal_type_desc) = 0 THEN SUM(SP.rows)
END,
TotalSpaceGB = SUM(SAU.total_pages) * 8/1048576.0,
UsedSpaceGB = SUM(SAU.used_pages) * 8/1048576.0,
UnusedSpaceGB = SUM(SAU.total_pages - SAU.used_pages) * 8/1048576.0,
TotalSpaceKB = SUM(SAU.total_pages) * 8,
UsedSpaceKB = SUM(SAU.used_pages) * 8,
UnusedSpaceKB = SUM(SAU.total_pages - SAU.used_pages) * 8
FROM sys.objects SO
INNER JOIN sys.schemas S ON S.schema_id = SO.schema_id
INNER JOIN sys.internal_tables SIT ON SIT.parent_object_id = SO.object_id
INNER JOIN sys.partitions SP ON SP.object_id = SIT.object_id
INNER JOIN sys.allocation_units SAU ON (SAU.type IN (1, 3)
AND SAU.container_id = SP.hobt_id)
OR (SAU.type = 2
AND SAU.container_id = SP.partition_id)
WHERE S.name = 'schema'
--AND SO.name IN ('TableName')
GROUP BY GROUPING SETS(
(S.name,
SO.name,
SIT.internal_type_desc),
(S.name, SO.name), (S.name),())
ORDER BY S.name,
SO.name,
SIT.internal_type_desc;
这通常会提供高于sys.fulltext_index_fragments
的数字,但当与表格的sys.partitions
结合使用时,它将合计从EXEC sys.sp_spaceused @objname = N'schema.TableName';
返回的数字。
测试与SQL Server 2016年,但文件说,它应该存在,因为2008年
也许这可能是有用的:http://technet.microsoft.com/en-us/library/ms190370.aspx(IndexSize属性) – 2011-01-30 03:27:27
* IndexSize *实际返回FTS目录的大小,并且目录可能具有多个索引。我想单独指定每个索引的大小。 – Poli 2011-01-31 14:51:02