SQL Server/SQL Server Tip 662

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 매개 변수 및 실행 계획 재사용

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 매개 변수 및 실행 계획 재사용 Version : SQL Server 2005, 2008, 2008R2, 2012 ADO, OLE DB, ODBC 응용 프로그램의 매개변수 표식을 포함하여 매개 변수 매개 변수를 사용하면 실행 계획을 좀더 많이 재사용 할 수 있다. 또한 보안 측면에서는 최종 사용자가 입력한 값을 갖는 매개 변수 표식을 사용하는 것이 데이터 액세스 API에서드, EXECUTE 문 또는 sp_executesql 저장 프로시저 중 하나를 사용하여 실행하는 문자열에 값을 연결하는 것보다 안전하다. 아래 스크립트에서 동일한 구문에 Where 절의 조건만 다른 스크립트 이다. 동일한 구문임에도 불구하고 두 쿼리는 다르게 인식 된다..

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에는 실행 계획과 데이터 버퍼를 모두 저장하는데 사용되는 메모리 풀이 있다. 실행 계획이나 데이터 버퍼에 할당되는 풀 비율은 시스템 상태에 따라 동적으로 변동 된다. 실행 계획을 저장하는데 사용되는 메모리 풀 부분을 프로시저 캐시 라고 한다. SQL Server 실행계획은 쿼리 계획과 실행 컨텍스트로 나눌 수 있다. 쿼리 계획 : 대량 실행 계획은 여러 사용자가 사용하는 재진입용 읽기 전용 데이터 구조이다. 이것을 쿼리 계획이라 한다. 쿼리 계획에는 사용자 컨텍스트가 저장되지 않는다. 메모리에는 쿼리 계획의 복사본이 두 개까지만 존재 할..

DMV를 이용한 캐시된 저장 프로시저 통계 정보 확인

DMV를 이용한 캐시된 저장 프로시저 통계 정보 확인 Version : SQL Server 2008, 2008R2, 2012 내 저장 프로시저가 잘 수행 되고 있을까? 동적관리 뷰(DMV)를 통해서 캐시된 저장 프로시저에 대한 집계 성능 통계를 확인 하여 보자. 뷰에는 캐시된 각 저장 프로시저 계획에 대해 하나의 행을 가지고 있다. 행의 유효 기간은 저장 프로시저가 캐시에 남아 있는 기간과 같으며 캐시에서 저장프로시저가 제거되면 해당 뷰에서도 해당 행이 제거 된다. 이때 Performance Statistics SQL 추적이벤트가 sys.dm_exec_query_stats와 유사하게 발생한다. select * from sys.dm_exec_procedure_stats 이름데이터 형식설명database_i..

SQL Server 쿼리 처리 아키텍처_저장 프로시저 및 트리거 실행

SQL Server 쿼리 처리 아키텍처_저장 프로시저 및 트리거 실행 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 저장 프로시저와 트리거의 원본만 저장한다. 저장 프로시저나 트리거가 먼저 실행 될 때 원본은 실행 계획으로 컴파일 된다. 실행 계획이 메모리에서 에이징되기 전에 저장 프로시저나 트리거가 다시 실행되는 경우 관계형 엔진은 기존 계획을 검색하고 다시 사용한다. 계획에 메모리에서 에이징되면 새 계획이 작성된다. SQL Server에서 모든 SQL 문에 대해 수행하는 프로세스와 유사하다. 성능면에서는 동적 SQL의 일괄처리와 비교 했을 때 SQL Server에서 저장 프로시저와 트리거의 주요 이점은 SQL문이 항상 동일하다는 것이다. 따라서..

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (4/4) – 분산형 분할 뷰(View) 확인

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (4/4) – 분산형 분할 뷰(View) 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 쿼리 프로세서에서는 분산형 분할 뷰의 성능을 최적화 한다. 분산형 분할 뷰 성능의 가장 중요한 측면은 멤버 서버 간에 전송되는 데이터의 양을 최소화 하는 것이다. SQL Server에서는 분산 쿼리를 효율적으로 사용하여 원격 멤버 테이블의 데이터에 액세스하는 지능적이고 동적인 계획을 작성 한다 로컬 분할 뷰(Local Partition View) : 수평으로 여러 테이블로 분할 된다. 일반적으로 모두 같은 구조를 가지고 있다. 크로스 데이터베이스 분할 뷰(Cross Database Partitione..

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (3/4) – 뷰(View)의 인덱스 확인

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (3/4) – 뷰(View)의 인덱스 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 인덱스와 마찬가지로 SQL Server에서는 쿼리 최적화 프로그램에서 쿼리 계획에 인덱싱된 뷰를 사용하는 것이 효과적이라고 판단하는 경우 인덱싱된 뷰를 사용한다. [SQL Server 쿼리 최적화 프로그램에서 인덱싱된 뷰 사용] 아래의 세션 옵션이 ON 설정되어 있어야 한다. ANSI_NULLS ANSI_PADDING ANSI_WARNNINGS ARITHABORT CONCAT_NULL_YIELDS_NULL QUOTED_IDENTIFIER 아래 옵션이 OFF 설정 되어 있어야 한다. NUMERIC_ROUNDABORT 쿼리의 ..

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (2/4) – 뷰(View) 확인

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (2/4) – 뷰(View) 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 쿼리 프로세서에서는 인덱싱된 뷰와 인덱싱 되지 않은 뷰가 다르게 처리 된다. 인덱싱된 뷰의 행은 테이블과 동일한 형식으로 데이터베이스에 저장 된다. 쿼리 프로세서에서 쿼리 계획에 인덱싱된 뷰를 사용하기로 결정하면 인덱싱된 뷰는 기본 테이블과 동일한 방법으로 처리 된다. 인덱싱되지 않은 뷰는 뷰의 정의만 저장되고 뷰의 행은 저장되지 않는다. 쿼리 최적화 프로그램은 인덱싱되지 않은 뷰를 참조하는 SQL문에 대해 작성하는 실행 계획에 뷰 정의의 논리를 추가 한다. SQL Server 쿼리 최적화 프로그램에서 인덱싱된 ..

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (1/4) – SQL 문 최적화 및 Worktables

SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (1/4) – SQL 문 최적화 및 Worktables Version : SQL Server 2005, 2008, 2008R2, 2012 [SELECT 문 최적화] 단일 SQL문 처리는 SQL Server가 SQL문을 실행하는 기본적인 방법이다. SELECT 문은 프로시저를 통하지 않는다. 즉 데이터베이스 서버가 요청한 데이터를 검색하는데 사용해야 하는 정확한 단계를 지정하고 있지 않는다. 이는 데이터베이스 서버가 요청 구문을 분석하여 데이터를 출하는 가장 효율적인 방법을 판단해야 함을 의미 한다. 이것을 SELECT 문 최적화라고 하며 이를 위한 구성 요소를 쿼리 최적화 프로그램이라고 한다. 최적화 프로그램에 대한 입력은 쿼리, 데이터베이스, ..

SQL Server 2012 DMV를 이용한 통계 정보 확인

SQL Server 2012 DMV를 이용한 통계 정보 확인 Version : SQL Server 2008R2 SP2, 2012 SP1 통계 정보를 확인 하기 위해서는 DBCC SHOWSTATISTICS 명령어를 이용하였다. 내가 운영하는 서버가 SQL Server 2008R2 SP2 또는 SQL Server 2012 SP1 상위 버전인 경우 DMV를 통하여서도 통계 속성 정보를 확인 해 볼 수 있다. DBCC SHOWSTATISTICS 통계 관련 아티클 : http://sqlmvp.kr/140165557766 새로운 통계 관련 DMV를 사용하기 위해서는 위에서 설명 하였듯이 SQL Server 2008R2 SP2 또는 SQL Server 2012 SP1 이상 설치 되어 있어야 한다. [구문] sys.d..

DMV를 이용한 플랜 캐시 사용 정보 확인 - Sys.dm_exec_cached_plans

DMV를 이용한 플랜 캐시 사용 정보 확인 Sys.dm_exec_cached_plans Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 빠른 쿼리 실행을 위해 실행계획을 캐시하고 있는데 sys.dm_exec_cached_plans DMV를 통하여 캐시된 쿼리 계획, 캐시된 쿼리 텍스트, 캐시된 계획이 사용한 메모리 양, 캐시된 실행 계획의 재사용 횟수 등의 정보를 확인 할 수 있다. 아래 스크립트를 이용하여 캐시된 계획을 확인 할 수 있다. 스크립트를 실행 하기 위해서는 서버에 대한 VIEW SERVER STATE 권한이 필요 하다. select * from sys.dm_exec_cached_plans 열이름데이터 형식설명bucketidInt캐시된..