소개: SQLServer2005SP2는 vardecimal 기능을 제공합니다. 이 기능을 사용하면 원래 고정 길이 십진수 데이터를 데이터 파일에 가변 길이 형식으로 저장할 수 있으며, 이 기능을 사용하면 데이터 웨어하우스의 공간을 절약할 수 있다고 합니다. 이를 기반으로 데이터 압축 기능이 강화되었습니다.
SQL Server의 데이터 압축 기능은 SQL Server 2005에서 처음 시작되었습니다. VarDecimal이라는 새로운 저장 형식이 Enterprise 및 Development Edition에 추가되었습니다. 이 기능은 소수점 및 숫자 필드에 영향을 미칠 수 있습니다. 데이터베이스의 테이블에 10진수 및 숫자 유형 데이터가 포함되어 있는 경우 사용자는 VarDecimal 저장소 형식을 사용하여 데이터베이스 크기를 줄일 수 있습니다. 절약할 수 있는 공간의 크기는 데이터베이스에 포함된 소수 또는 숫자 데이터 열의 수, 데이터 분포, 테이블 크기에 따라 달라집니다.
데이터 압축 사용
SQL Server 2008의 또 다른 새로운 기능인 데이터 압축 기능은 데이터 압축 기능을 사용하여 데이터 테이블, 인덱스 및 파티션의 하위 집합 크기를 줄일 수 있습니다. 그런데 이전에 SQL Server 2005에 있던 이 기능이 차세대 버전의 시스템에서 개선되어야 하는 이유는 무엇입니까? 스토리지 비용이 지속적으로 감소하는 시장 환경에서 데이터 압축 기술은 기업에 어떤 이점을 가져올 수 있습니까?
스토리지 비용은 더 이상 기업이 관심을 갖는 민감한 요소가 아니지만 이것이 데이터베이스 크기가 기업 운영 효율성에 영향을 미치지 않는다는 의미는 아닙니다. 왜냐하면 스토리지 비용에 영향을 미칠 뿐만 아니라 데이터베이스 크기도 관리와 크게 관련되어 있기 때문입니다. 비용 및 성능 문제.
우선 데이터베이스를 백업해야 하기 때문에 데이터베이스 크기가 커질수록 백업 시간도 길어지고, 백업 하드웨어 비용도 늘어나게 된다. 성능 측면에서 SQL Server는 데이터 페이지 단위로 데이터를 읽습니다. 따라서 데이터 페이지에 더 많은 데이터 행이 포함되어 있으면 SQL Server가 하나의 데이터 페이지 IO에서 더 많은 데이터를 얻습니다. 더 많아지면 성능도 향상됩니다.
SQL Server2005SP2의 VarDecimal 압축 데이터와 비교하여 현재 SQLServer2008에서 출시된 테스트 데이터는 새로운 데이터 압축 기술을 사용하여 더 높은 저장 속도를 달성하고 기업의 재해 복구를 위한 증가된 저장 공간과 결합되어 모두 SQLServer2008에 장점이 있습니다. 이 새로운 기능.
페이지 2: 두 가지 압축 모드
데이터 압축의 실제 이점을 이해하고 나면 데이터 압축의 도움으로 스토리지 비용이 절감되고, 쿼리 성능이 향상되며, I/O가 감소하고, 버퍼링 클릭률이 증가한다는 개념의 침투를 느낄 수 있습니다. 이 기능은 응용 프로그램 프로세스에서 여전히 매우 효과적이라는 것을 알 수 있습니다. SQL Server 2008에는 행 압축과 페이지 압축이라는 두 가지 데이터 압축 응용 방법이 있습니다.
데이터 압축 마법사 중 압축 유형 선택
행 압축. 행 압축은 고정 길이 유형을 가변 길이 저장소 유형으로 저장할 수 있습니다. 예를 들어 가변 길이 저장 형식으로 저장된 char(100) 열은 저장 용량에 따라 정의된 데이터만 사용합니다. 저장된 "SQLServer2008"은 압축 후 100자 전체가 아닌 15자만 저장하면 되므로 저장 공간이 85% 절약됩니다. 이는 SQLServer2005ServicePack2에서 제공하는 VarDecimal 저장 형식의 아이디어를 확장한 것입니다. 또한 이 압축 모드는 모든 데이터 유형의 NULL 및 0 값을 최적화하여 바이트를 차지하지 않는다는 점에 유의해야 합니다.
SQLServer2008 데이터 압축은 이 기능을 확장하지만 정수, 문자 및 부동 소수점을 포함한 모든 고정 길이 데이터 형식이 처리됩니다. 이제 데이터는 고정된 크기 바이트로 저장되지 않고, 행 압축을 활성화하면 간단히 수행할 수 있는 최소 필수 바이트로 저장됩니다. 그러나 행 압축은 XML, BLOB 및 MAX 데이터 유형을 처리할 수 없습니다.
페이지 압축 모드. 행 압축을 기반으로 하는 이 압축 기능은 페이지에 동일한 이벤트 바이트를 한 번만 저장하여 저장된 중복 데이터를 최소화합니다. 테이블과 인덱스는 페이지 압축 외에도 행 압축 외에도 접두사 압축 및 사전 압축도 사용됩니다.
데이터 압축은 테이블 또는 인덱스 메트릭의 크기를 줄입니다. 먼저 압축 후 공간 절약을 평가하는 것이 가장 좋습니다. 각 페이지는 개별적으로 압축되며 접두어와 사전도 페이지 내에 저장됩니다. 페이지는 저장소 할당의 원자 단위이므로 페이지의 절반을 1/4 페이지로 압축하는 것은 의미가 없습니다. 따라서 압축 프로세스는 페이지 콘텐츠가 거의 가득 찼을 때만 시작됩니다.
행 및 페이지 압축을 사용할 때 CPU 사용량은 증가하지만 I/O 사용량 및 메모리 공간은 감소하므로 성능 상충관계도 있습니다. 그러나 모든 압축 옵션은 SQLServer2008 Enterprise Edition의 독점 옵션이 될 수 있습니다.
페이지 3: 데이터 압축을 사용하는 방법
부록(데이터 압축 사용 방법):
(1) 행 압축 활성화
지정된 테이블에서 행 압축을 활성화하려면 다음 명령문을 실행할 수 있습니다.
CREATE TABLE Alpha(col1 int,col2 char(1000))
와(DATA_COMPRESSION = ROW)
(2) 페이지 압축 활성화
지정된 파티션에서 압축을 활성화하려면 다음 명령문을 실행할 수 있습니다.
CREATE TABLE Alpha_Partition(col1 int,col2 char(1000))
ONPartitionScheme(열 1)
와 함께
(DATA_COMPRESSION = 페이지 켜짐)
파티션(1-3)
(3) 압축 수정
압축을 사용하도록 기존 인덱스를 수정하려면 다음 문을 실행합니다.
알파 리빌드 시 ALTER INDEX Collndx
(DATA_C0MPRESSION=페이지)
알파 리빌드 시 ALTER INDEX Collndx
파티션=2
(데이터_압축=페이지)
SQL Server 2008의 압축 옵션은 테이블이나 인덱스를 생성할 때 Option을 통해 설정할 수 있습니다. 예를 들면 다음과 같습니다.
CREATE TABLE TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);
파티션의 압축 옵션을 변경해야 하는 경우 다음 명령문을 사용할 수 있습니다.
ALTER TABLE TestTable REBUILD PARTITION = 1 WITH(DATACOMPRESSION=PAGE);
분할된 테이블의 각 파티션에 대해 서로 다른 압축 옵션을 설정해야 하는 경우 다음 명령문을 사용할 수 있습니다. (SQLServer2008은 서로 다른 파티션에 대해 서로 다른 압축 옵션을 사용할 수 있습니다. 이는 데이터 웨어하우스의 팩트 테이블이 데이터 웨어하우스 애플리케이션에 매우 중요합니다. 일반적으로 하나 이상의 핫 파티션이 있으며 이러한 파티션의 데이터를 업데이트해야 하는 경우가 많습니다. 데이터 압축으로 인해 이러한 파티션의 데이터 업데이트에 추가 처리 부하가 발생하는 것을 방지하려면 해당 파티션에 대한 압축 옵션을 끌 수 있습니다.
CREATE TABLE 분할 테이블(col1 int, col2varchar(200))
PS1 사용(col1)
WITH (DATA_COMPRESSION = 파티션(1)의 행,
DATA_COMPRESSION = 파티션의 페이지(2 ~ 4));
인덱스에 대한 압축 옵션을 설정하는 경우 다음을 사용할 수 있습니다.
CREATE INDEX IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);
인덱스의 압축 옵션을 수정하려면 다음을 사용할 수 있습니다.
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);