본문 바로가기

SQL Server/SQL Server Tip & Tech

Vardecimal Storage Format을 사용하여 데이터베이스 사이즈 줄이기

decimal 데이터 타입을 가변 길이형으로 저장하여 데이터베이스 사이즈를 줄이고 I/O를 개선할 수 있다.
단, CPU에 추가로 발생하는 오버해드를 고려해야 한다.

사용 조건
- SQL 2005 SP2 이상
- Enterprise, Developer, Evaluation Edition
- ALTER DATABASE 권한


sp_db_vardecimal_storage_format [ [ @dbname = ] 'database' ] 
    [ , [ @vardecimal_storage_format = ] {'ON' | 'OFF' }] [ ; ]


다음과 같은 경우 sp_db_vardecimal_storage_format이 실패합니다.
- 데이터베이스에 활성 사용자가 있는 경우
- 데이터베이스를 미러링에 사용할 수 있는 경우
- SQL Server 버전에서 VarDecimal 저장소 형식을 지원하지 않는 경우


고정 길이 decimal vs. 가변 길이 decimal

Column precision Original fixed decimal size (bytes) Maximum vardecimal data area (bytes) Overhead to store offset (bytes) Maximum vardecimal storage used (bytes)
1-3 5 3 2 5
4-6 5 4 2 6
7-9 5 5 2 7
10-12 9 6 2 8
13-15 9 8 2 10
16-18 9 9 2 11
19 9 10 2 12
20-21 13 10 2 12
22-24 13 11 2 13
25-27 13 13 2 15
28 13 14 2 16
29-30 17 14 2 16
31-33 17 15 2 17
34-36 17 16 2 18
37-38 17 18 2 20


출처 : http://technet.microsoft.com/en-us/library/bb508963(SQL.90).aspx