문제

직선과 테이블 크기를 추정하는 것은 상당히 간단한 수학이지만, 각 인덱스가 얼마나 많은 공간을 차지할 것인지 추측하는 것이 어렵다는 것을 알게됩니다 (주어진 테이블 크기). 지수에 대한 더 나은 추정치 및 성장률을 계산하는 법을 배울 수있는 영역은 무엇입니까?

도움이 되었습니까?

해결책

인덱스 리프에는 프레임 블리트가 데이터 페이지 (7 바이트와 가변 길이 열에 대한 일부 디렉토리 정보,있는 경우)와 해당 열의 테이블 데이터와 동일한 크기 인 키 값의 사본을 식별합니다. 테이블에 각 행마다 하나가 있습니다. 지수의 높은 수준이 훨씬 작으며, 매우 넓은 키를 색인하지 않는 한 일반적으로 잎의 1% 미만입니다.

충전 계수는 약간의 공간이 없어서 업데이트 및 인서트가 과도한 잎 분할 트래픽을 생성하지 않도록합니다.

편집하다: 이 MSDN 링크 개별 색인 행의 형식에 약간 가볍지 만 페이지 수준 구조를 설명합니다. 이 프레젠테이션 디스크 로그 항목 및 데이터 페이지의 물리적 형식으로 어느 정도까지 들어갑니다. 이 하나 자세한 내용은 색인 데이터 구조를 포함합니다. 숫자 및 고정 길이 열에는 상자에 표시된 크기가 있습니다. Varchar 열의 평균 크기를 추정해야합니다.

참고로 Oracle의 블록 형식에 대한 일부 문서를 찾을 수 있습니다. 여기 그리고 여기.

다른 팁

가능하면 일반적으로 원래 테이블에서 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
--========================================================================================
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top