전체 테이블 인덱스가 정의 된 테이블이있는 테이블이있는 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 후 경우
감사! 나는 잠시 동안이 프로젝트에서 일하지 않았기 때문에 이것을 확인하기 위해 약간의 시간이 필요할 것입니다. – Poli
@Poli 예, 질문을받은 지 2 년 후이 질문을 내 관심으로 가져 왔는지 모르겠습니다. –
이것은 전체 텍스트 조각의 음 압축 된 크기 인 것 같습니다. 'sys.internal_table'을 보면 압축 된 프래그먼트의 크기와 나머지 전체 텍스트 인프라에 필요한 공간을 얻을 수 있습니다. 예제 쿼리에 대한 내 대답을 참조하십시오. – TheConstructor
- CLIK [데이터베이스]에서와 객체 을 확장 - [저장] 을 클릭 - 마우스 오른쪽을 클릭 {특정 카탈로그} - Propertie을 선택하고 클릭합니다. 일반 탭에서 .. 당신은 카탈로그 크기를 찾을 수 = '윈'
나는 (또한 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';
에서 반환되는 숫자가 합쳐집니다.
어쩌면이 유용 할 수 있기 때문에이 존재해야 말한다 : http://technet.microsoft.com/en-us/library/ms190370.aspx (IndexSize 속성) –
* IndexSize *는 실제로 FTS 카탈로그의 크기를 반환하고 카탈로그에는 둘 이상의 인덱스가있을 수 있습니다. 각 색인의 크기를 개별적으로 원합니다. – Poli