DBMS 2
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
데이터베이스 시스템에 적절한 인덱스 세트를 파악하는 것은 복잡한 작업일 수 있습니다. 일반 인덱스를 설계할 때도 수 많은 가능성을 고려해야 하지만 스키마에 인덱싱된 뷰를 추가하면 설계가 훨씬 복잡해지며 가능한 결과의 수도 증가합니다. 예를 들어 인덱싱된 뷰는 다음에서 사용 될 수 있습니다. 각 구조에서 최상의 결과를 도출하기 위해서는 테이블의 인덱스와 인덱싱된 뷰를 동시에 설계해야 합니다. 인덱스와 인덱싱된 뷰 모두 주어진 쿼리에 유용할 수 있기 때문에 이들을 각각 따로 설계하면 중복된 권장 사항으로 높은 스토리지 및 유지 관리 오버헤드를 야기할 수 있습니다. 데이터베이스의 물리적 설계를 조정하는 동안 다양한 쿼리 세트의 성능 요구 사항과 데이터베이스 시스템이 지원해야 하는 업데이트 간에 상충이 발생합니다. 따라서 인덱싱된 뷰에 대한 적절한 물리적 설계를 파악하는 것이 무엇보다 중요한 과제이기 때문에 가능한 Database Tuning Advisor를 사용하도록 합니다. 쿼리 최적화 프로그램이 특정 쿼리에 대한 많은 인덱싱된 뷰를 고려할 수 있기 때문에 쿼리 최적화 비용이 크게 상승할 수 있습니다. 쿼리 최적화 프로그램은 쿼리의 모든 테이블 하위 집합에 정의되어 있는 모든 인덱싱된 뷰를 고려할 수 있습니다. 거부되기 전에 각 뷰의 대체 가능성에 대해 조사해야 합니다. 주어진 쿼리에 대한 수백 개의 뷰가 존재할 경우 같은 시간이 소요될 수 있습니다. 뷰에 클러스터된 고유 인덱스를 생성하기 위해서는 여러 요구 사항을 충족해야 하며 설계 단계에서 다음과 같은 요구 사항을 고려해야 합니다. 인덱싱된 뷰를 설계할 때 다음과 같은 지침을 고려하십시오. 다음 예제를 검토해 보십시오. DTA3(Database Tuning Advisor)는 데이터베이스 관리자가 물리적 데이터베이스 설계를 조정할 수 있도록 돕는 SQL Server 2005 기능입니다. DTA는 기본 테이블의 인덱스와 테이블 및 인덱스 파티셔닝 전략은 물론, 인덱싱된 뷰를 권장합니다. DTA를 사용하면 데이터베이스에 대해 실행된 일반적인 쿼리들의 성능을 최적화하하는 인덱스, 인덱싱된 뷰 및 파티셔닝 전략 등을 결정하는 관리자의 능력을 한층 강화할 수 있습니다. DTA는 매우 다양한 인덱싱된 뷰를 권장할 수 있습니다. 여기에는“SQL Server 2005의 인덱싱된 뷰가 제공하는 새로운 기능”에서 설명된 SQL Server 2005의 인덱싱된 뷰를 위한 새로운 기능을 활용하는 뷰도 포함됩니다. DTA를 사용한다고 해서 데이터베이스 관리자가 물리적 스토리지 구조를 설계할 때 올바른 판단을 내리기 위해 노력할 필요가 없다는 것을 의미하는 것은 아니며 물리적 데이터베이스 설계 프로세스를 간소화할 수 있습니다. DTA는 가상의 인덱스, 인덱싱된 뷰, 파티션 구조를 제안하여 비용 기반의 쿼리 최적화 프로그램과 연동할 수 있으며 최적화 프로그램을 사용하여 파티션 구조를 채택한 경우와 그렇지 않은 경우의 워크로드 비용을 예측하고 전체 비용이 낮은 구조를 권장합니다. DTA는 필요한 모든 SET 옵션을 적용하기 때문에(올바른 결과 세트 보장을 위해) 인덱싱된 뷰를 성공적으로 작성할 수 있습니다. 그러나 옵션이 요구에 맞게 설정되지 않은 경우, 응용 프로그램이 뷰를 제대로 활용할 수 없습니다. SET 옵션이 제대로 설정되지 않으면 인덱싱된 뷰 정의에 포함된 테이블에서 삽입, 업데이트, 삭제 작title>데이터 업데이트가 인덱싱된 뷰에 미치는 영향 SQL Server는 기본 테이블 데이터의 변경 시 다른 인덱스와 유사한 방식으로 인덱싱된 뷰를 자동 유지 관리합니다. 일반 인덱스의 경우, 단일 테이블에 각각의 인덱스가 직접 연결됩니다. 원본으로 사용하는 테이블에서 각각의 INSERT, UPDATE 또는 DELETE 작업이 수행되고 이에 따라 인덱스가 업데이트되기 때문에 인덱스에 저장된 값을 테이블과 항상 일치시킬 수 있습니다. 인덱싱된 뷰도 이와 유사하게 유지 관리되지만, 뷰가 여러 테이블을 참조할 경우 테이블 업데이트를 위해서는 인덱싱된 뷰가 필요할 수 있습니다. 일반 인덱스와 달리 인덱싱된 뷰에서는 참가 테이블에 단일 행을 삽입하면 여러 행이 변경될 수 있습니다. 단일 행이 다른 테이블의 여러 행을 조인할 수 있기 때문입니다. 업데이트나 삭제 작업에서도 마찬가지입니다. 결론적으로 인덱싱된 뷰의 유지 관리는 테이블 인덱스 유지 관리 보다 훨씬 많은 비용이 듭니다. 반대로 뷰가 참조하는 기본 테이블에 대한 삽입, 삭제 및 업데이트 작업은 대부분 뷰에 영향을 미치지 않기 때문에 고도의 선택 상황에서는 인덱싱된 뷰의 유지 관리 비용이 테이블 인덱스 유지 관리 비용 보다 훨씬 적습니다. 다른 데이터베이스 데이터를 액세스하지 않고도 인덱싱된 뷰와 관련해 이러한 작업을 제거할 수 있습니다. SQL Server에서는 일부 뷰를 업데이트할 수 있습니다. 뷰 업데이트가 가능하면 INSERT, UPDATE 및 DELETE 명령문을 사용하는 뷰를 통해 원본으로 사용하는 기본 테이블이 직접 수정할 수 있습니다. 뷰에서 인덱스를 생성해도 뷰 업데이트를 막을 수는 없습니다. 인덱싱된 뷰를 업데이트하면 실제로 뷰의 원본으로 사용하는 기본 테이블이 업데이트됩니다. 이러한 업데이트는 인덱싱된 뷰 유지 관리의 일환으로서 인덱싱된 뷰까지 자동으로 전달됩니다. 업데이트 가능 뷰에 대한 자세한 내용은 SQL Server 2005를 위한 SQL Server Books Online의“뷰를 통한 데이터 수정”을 참조하십시오. 인덱싱된 뷰를 설계할 때 다음과 같은 사항을 고려해야 합니다. 뷰가 제공하는 총 쿼리 실행 절감 효과 및 뷰 저장/유지 관리 비용에서의 차이가 뷰를 통해 달성할 수 있는 순수 성능 개선이라 할 수 있습니다. 뷰에서 필요한 스토리지를 손쉽게 예측할 수 있습니다. SQL Server Management Studio 도구인 Display Estimated Execution Plan을 통해 뷰 정의를 통해 캡슐화된 SELECT 명령문을 평가하십시오. 이 도구를 통해 쿼리가 반환하는 행의 수와 행 크기를 예측할 수 있습니다. 이 두 값을 곱하면 뷰의 크기를 예측할 수 있습니다. 하지만, 이것은 어디까지나 근사치입니다. 뷰 정의에서 쿼리를 실행하거나 뷰에서 인덱스를 생성해야만 뷰의 실제 인덱스 크기를 정확하게 알 수 있습니다. SQL Server가 수행하는 자동화된 유tion Plan 기능은 이러한 오버헤드의 영향을 파악할 수 있도록 지원합니다. SQL Server Management Studio를 통해 뷰를 수정한 명령문(뷰에서의 UPDATE, 기본 테이블로의 INSERT)을 평가하면 해당 명령문에 대해 표시된 실행 계획에 유지 관리 작업이 포함됩니다. 프로덕션 환경에서 이 작업이 수행되는 회수와 비용을 고려하면 뷰 유지 관리 비용을 예측할 수 있습니다. 일반 권장사항으로 뷰나 원본으로 사용하는 기본 테이블에 대한 모든 수정 또는 업데이트는 가능한 단독 방식이 아닌 배치 방식으로 수행되어야 합니다. 따라서, 뷰 유지 관리에 있어 오버헤드를 줄일 수 있습니다.설계 고려 사항
설계 고려 사항
설계 지침
인덱싱된 뷰의 선택을 지원하는 도구
유지 관리 비용 고려 사항