Top 10 SQL Server 2008 Features for ISV Application

SQL Server 2008은 기존 2000/2005에 비해 수 많은 다양한 새로운 기능을 갖고 있습니다.
이 중에 SQL Server를 기반으로 애플리케이션을 개발하는 ISV 들을 위한 TOP 10 기능 및 그 효과를 간단히 나열해 봤습니다.

1. Data Compression
파티션 단위로 Row/Page 데이터 압축을 적용할 수 있으며, Disk I/O 최소화 및 Buffer memory에 대한 효율적인 사용이 가능합니다.
데이터의 종류 및 페이지 내의 데이터 분포에 따라 달라질 수 있지만, 일반적으로 1/2 ~ 1/7의 압축비를 제공합니다.

2. Backup Compression전체 백업 등의 백업 생성 시 압축하여 생성하며, Disk I/O 최소화로 백업/복구 성능을 향상시킬 수 있습니다.
데이터의 종류 및 페이지 내의 데이터 분포에 따라 달라질 수 있지만, 일반적으로 1/2 ~ 1/7의 압축비를 제공합니다.  

3. TDE (Transparent Data Encryption) 데이터 파일 혹은 백업 파일에 대한 암호화를 제공합니다. Page I/O 발생 시 데이터 암호화/복호화가 이루어집니다.
TDE를 적용해도 애플리케이션의 어떠한 코드 수정도 필요하지 않기 때문에, 쉽게 적용 가능합니다.

4. Data Collector & MDW (Management Data Warehouse) 성능 카운터 및 DMV(동적 관리 뷰) 등에서 제공되는 정보를 주기적으로 수집하여 성능 관리를 위한 데이터 웨어하우스를 만들 수 있습니다.
서버 사용 정보, 디스크 공간 정보, 쿼리 성능 정보 등의 리포트가 기본적으로 제공되며, 원한다면 Reporting Services를 기반으로 커스터마이징 할 수 있습니다.

5. Lock Escalation Enhancement
SQL Server는 데이터베이스 엔진에서 Lock escalation을 조정하며, 간혹 예기치 않은 Lock escalation은 Deadlock 등이 발생할 수 있습니다.
SQL Server 2008부터는 ALTER TABLE 구문을 통해 테이블 단위로 Lock escalaction의 발생을 조절하는 것이 가능합니다.

6. Query Plan Freezing
ISV 애플리케이션은 일정한 성능 보장을 위해 특정 쿼리가 항상 같은 쿼리 실행 계획을 사용하도록 조절해야 할 경우가 있습니다.
SQL Server 2008의 Query Plan Freezing 기능을 이용하면, 파라미터 스니핑 혹은 통계 정보 관리 미흡 등에 의해 쿼리 실행 계획이 변경되는 경우를 미연에 방지할 수 있습니다.

7. Optimize for Ad-Hoc Workloads OptionSQL Server 2008은 구성 옵션 (sp_configure)에서 Optimized for Ad-Hoc Workloads라는 옵션을 새롭게 제공합니다.
해당 옵션을 활성화 시키실 경우 Ad-hoc 쿼리의 사용 비율이 많은 ISV 애플리케이션에서는 Plan cache를 좀더 효율적으로 사용할 수 있습니다.

8. Resource Governor
서버 통합과 같이 다양한 Workloads가 실행되는 환경 혹은 특정 업무에 대한 중요성이 높은 환경일 경우 유용한 Resource Governor 입니다.
Resource Governor를 이용하면 Workload 별로 CPU/Memory 등의 서버 자원을 동적으로 분배할 수 있으며, 이를 통해 일정한 성능을 보장할 수 있습니다. 

9. Table-Valued Parameter테이블 변수를 만들어 해당 변수에 마치 임시 테이블과 같이 데이터를 INSERT 후 이 변수를 저장 프로시저 혹은 함수에 파라미터 형태로 전달할 수 있는 기능입니다.
임시 테이블을 만들어 전달하던 과거의 방식 보다는 I/O 및 성능 개선 효과가 있으며, 시나리오에 따라 뛰어난 대량 데이터 적재 방법으로 사용될 수 있습니다.

10. Filestream스트리밍 등을 위해 별도의 파일 서버로 저장되는 동영상, 음악, 이미지 등의 대용량 BLOB데이터를 효과적으로 SQL Server에서 저장/관리/사용할 수 있는 기능입니다.
1MB 이상의 BLOB 데이터를 처리할 경우에 효과적이며 (사이즈가 작으면 권장하지 않습니다..) Win32 Streaming API를 통해 바이너리 파일을 직접 스트리밍 할 수 있습니다.

위 내용과 관련된 원문은 SQL CAT (Customre Advisory Team) 블로그의 기사에서 확인 가능합니다
https://sqlcat.com/top10lists/archive/2008/11/24/top-10-sql-server-2008-features-for-isv-applications-burzin.aspx