728x90
반응형
MS SQL Enterprise Edition 에서는 데이터에 대한 압축을 할 수가 있습니다.
데이터의 PAGE 압축이 되어있는지 여부를 확인하고 싶습니다.
1. 압축된 인덱스 및 해당 테이블을 찾을 수 있습니다.
SELECT OBJECT_NAME(I.OBJECT_ID) AS 'TABLENAME',
I.NAME,
*
FROM sys.partitions AS P
JOIN sys.objects AS O ON P.OBJECT_ID=O.OBJECT_ID
JOIN sys.indexes AS I ON P.OBJECT_ID=I.OBJECT_ID
AND P.INDEX_ID=I.INDEX_ID
WHERE DATA_COMPRESSION<>0
2. 압축된 인덱스와 압축 안된 인덱스를 모두 가지고 있는 테이블을 찾으려고 합니다.
찾고자 하는 이유는 압축된 인덱스가 있다는 것은 압축해야 하는 테이블이라고 생각되며, 만약 테이블에 압축 안된 인덱스들이 존재한다면 앞으로 압축을 해야 하는 인덱스일 가능성이 크기 때문입니다.
SELECT *
FROM (
--압축된 인덱스가 존재하는 테이블 추출
SELECT DISTINCT
OBJECT_NAME(I.OBJECT_ID) AS 'TABLENAME'
FROM sys.partitions AS P
JOIN sys.objects AS O ON P.OBJECT_ID=O.OBJECT_ID
JOIN sys.indexes AS I ON P.OBJECT_ID=I.OBJECT_ID
AND P.INDEX_ID=I.INDEX_ID
WHERE DATA_COMPRESSION<>0
)AS A
JOIN (
--테이블에 속한 인덱스
SELECT OBJECT_NAME(OBJECT_ID) AS TABLENAME,
NAME,
TYPE_DESC,
IS_DISABLED
FROM sys.indexes
)AS B ON A.TABLENAME=B.TABLENAME
LEFT JOIN (
--압축된 인덱스만 추출
SELECT OBJECT_NAME(I.OBJECT_ID) AS 'TABLENAME',
I.NAME
FROM sys.partitions AS P
JOIN sys.objects AS O ON P.OBJECT_ID=O.OBJECT_ID
JOIN sys.indexes AS I ON P.OBJECT_ID=I.OBJECT_ID
AND P.INDEX_ID=I.INDEX_ID
WHERE DATA_COMPRESSION<>0
)AS C ON B.TABLENAME=C.TABLENAME AND B.NAME=C.NAME
WHERE C.NAME IS NULL
AND IS_DISABLED=0
위의 쿼리를 실행하면 아래와 같은 결과값을 얻을 수 있습니다.
압축된 인덱스가 존재하는 테이블 중 압축 안된 인덱스리스트가 결과값으로 조회가 됩니다.
728x90
반응형
'운영 > 압축' 카테고리의 다른 글
MS SQL 2008 버전 이상에서의 Data Compession (0) | 2019.07.04 |
---|---|
SAP + MS SQL 2008 환경에서의 인덱스 압축 (0) | 2013.12.07 |
NonClustered Index 자동 압축 스크립트 만들기 (0) | 2013.12.01 |
테이블 압축 여부 확인하기 (0) | 2013.12.01 |
2008 이후 버전에서 제공되는 데이터 압축 성능 테스트 (0) | 2013.12.01 |