SQL Server 818

SQL Server 그래픽 실행 계획 노드 정보

SQL Server 그래픽 실행 계획 노드 정보 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 이전 강좌에서 실행계획을 표시하는 방법과 읽는 순서, 그리고 프로파일러에서 실행계획을 캡처하는 방법에 대해서 알아 보았다. 실행계획 표시 : http://sqlmvp.kr/140181977090 프로파일러 실행계획 캡처 : http://sqlmvp.kr/140182104809 이번 실습은 그래픽 실행계획에서 나타나는 노드 정보를 읽는 방법에 대해서 알아 보자. 다음과 같이 쿼리를 실행하여 그래픽 실행계획을 생성하였다. 마우스 커서를 해당 그림 위에 올려 놓으면 다음과 같이 정보가 나타난다. 물리적 연산 : 해시 조인, 중첩 루프 등 사용된 물리 연산자. 빨간색으로 ..

프로파일러를 이용한 실행계획 캡처하기

프로파일러를 이용한 실행계획 캡처하기 Version : SQL Server 2000, 20005, 2008, 2008R2, 2012 DBA에 필요한 필수 요구 중 하나가 실행계획을 보는 것이다. 이 것은 그래픽 형식 뿐 만 아니라 텍스트 형식으로도 볼 수 있다. 실행 계획을 읽음으로써 현재 쿼리가 어떻게 행동 하는지 알 수 있다. DBA는 이 실행 계획을 바탕으로 문제를 해결 한다. 실행 계획을 캡처 하는 방법에는 여러 가지가 있다. 지난 시간에는 옵션을 통하여 실행 계획을 캡처하는 방법을 알아 보았다. 관련 링크 : http://sqlmvp.kr/140181977090 이번 시간에는 프로파일러를 통한 그래픽 및 텍스트 형식의 실행 계획을 캡처 하도록 하자. 프로파일러를 실행해서 [모든 이벤트 표시]를 ..

SQL Server 그래픽 실행 계획 및 텍스트 실행 계획

SQL Server 그래픽 실행 계획 및 텍스트 실행 계획 Version : SQL Server 2005, 2008, 2008R2, 2012 쿼리 실행계획에는 예상 실행계획과 실제 실행계획이 있다. 예상 실행계획은 통계를 기반으로 예상되는 실행 계획을 나타내며 실제 실행 계획은 쿼리가 수행 되면서 사용된 계획을 반환 한다. 따라서 예상 실행계획과 실제 실행계획의 비용이 차이가 날 수도 있다. 실행계획을 보는 방법에는 그래픽 방법과 텍스트, 기타 XML 등의 방법이 있다. 실행계획 정보에 대한 자세한 내용은 다음 MSDN을 참고 한다. http://msdn.microsoft.com/ko-kr/library/ms189602.aspx [그래픽 실행 계획] 그래픽 실행계획은 SSMS에서 [쿼리] – [예상 실행..

SQL Server에서 Trigger 활성 / 비활성 감시

SQL Server에서 Trigger 활성 / 비활성 감시 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 기본적으로 트리거의 활성/비활성화를 추적하지 않는다. 트리거를 생성하면 기본적으로는 활성화 되어 있다. 하지만 권한을 가진 다른 사용자가 트리거를 비활성 시킬 수 있다. 트리거의 활성/비활성을 감시하는데에는 많은 비용이 소모 될 수 있다. 실습을 통하여 트리거의 활성/비활성을 캡처하자. 다음과 같이 서버 감사를 생성하고 실행 한다. CREATE SERVER AUDIT ServerAudit TO FILE (FILEPATH = 'D:\', MAXSIZE = 1GB) WITH (ON_FAILURE = CONTINUE); GO ALTER SERVER ..

DDL Trigger를 이용한 데이터베이스 변경 사항 추적

DDL Trigger를 이용한 데이터베이스 변경 사항 추적 Version : SQL Server 2005, 2008, 2008R2, 2012 누군가 데이터베이스에 접속하여 프로시저를 생성하고, 테이블을 생성하고, 스키마를 변경한다. 어떻게 추적할 수 있을까? DDL 트리거를 이용하여 데이터베이스의 변경사항을 추적하여 보자. 변경이력을 저장할 테이블을 생성한다. CREATE TABLE dbo.DDLEvents( EventDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, EventType NVARCHAR(64), EventDDL NVARCHAR(MAX), EventXML XML, DatabaseName NVARCHAR(255), SchemaName NVARCHAR(25..

Trigger를 이용한 SQL Server 커넥션 풀링 확인

Trigger를 이용한 SQL Server 커넥션 풀링 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영할 때 응용프로그램이 SQL Server에 연결하는 비용은 매우 중요하다. 사용자 커넥션 비용은 (3 * network_packet_size) + 94KB 이다. 기본 네트워크의 패킷 사이즈는 4KB 이다. 결국 사용자 1명당 필요한 연결 비용은 약 130KB가 소모 된다. 커넥션 풀링은 응용프로그램이 커넥션을 필요로 하는 시점에 커넥션을 만드는게 아니라 미리 일정 수의 커넥션을 만들어 놓고 필요로 하는 응용프로그램에 전달하는 방식이다. DDL Trigger를 활용하여 응용프로그램이 커넥션 풀링을 사용하고 있는지 알아 보자. 커넥션 기록을..

SQL Server Trigger

SQL Server Trigger Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 데이터베이스 서버 활동에서 감사가 필요할 때(시스템 변경, 데이터 조작 등)변경 사항 등을 수집 할 수 있다. SQL Server 2000에서는 로그인 감사 및 DML(데이터 조작 언어)을 사용하여 데이터 변경 사항을 캡처 하였다. SQL Server 2005 부터는 DDL(데이터 정의 언어) 트리거가 도입 되었다. [DML 트리거] CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH [ ,...n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDAT..

인덱스에 대한 SORT_IN_TEMPDB 옵션

인덱스에 대한 SORT_IN_TEMPDB 옵션 Version : SQL Server 2005, 2008, 2008R2, 2012 인덱스를 만들거나 리빌드 할 때 발생하는 디스크 공간의 추가 요구 사항이 발생하는 케이스를 살펴 보았다. [인덱스 작업의 디스크 공간 요구 사항] http://sqlmvp.kr/140180087406 인덱스를 생성할 때 SORTIN_TEMPDB를 사용하여 성능 향상을 시킬 수 있다고 하였는데 SORT_IN_TEMPDB에 대해서 자세히 알아 보자. SORT_IN_TEMPDB 옵션은 인덱스를 만들거나 리빌드 할 때 SQL Server 데이터베이스 엔진에서 인덱스를 만드는데 사용되는 중간 정렬 결과를 tempdb에 저장한다. tempdb가 데이터가 위치한 드라이브가 아닌 다른 빠른 ..

인덱스 DDL 작업의 디스크 공간 요구 사항

인덱스 DDL 작업의 디스크 공간 요구 사항 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 디스크 공간은 인덱스를 생성, 다시 작성, 삭제 할 때 고려해야 할 주요 사항이다. 디스크 공간이 부족하면 성능이 저하되거나 인덱스 작업이 실패 할 수도 있다. 인덱스를 생성할 때 고려해야 할 일반적인 사항을 정리하여 보자. [인덱스 작업 시 추가 공간 불필요] DROP INDEX, 넌클러스터 인덱스를 삭제할 때 추가 공간 불필요. DROP INDEX, 넌클러스터 인덱스가 없는 경우 MOVE TO 절을 지정하지 않고 오프라인으로 클러스터형 인덱스를 삭제 할 때 추가 공간 불필요. [인덱스 작업 시 추가 공간 필요] CREATE INDEX CREATE INDEX WITH..

XML nodes() 함수를 이용한 OPENXML 교체

XML nodes() 함수를 이용한 OPENXML 교체 Version : SQL Server 2005, 2008, 2008R2, 2012 OPENXML은 XML문서에 대한 행 집합 뷰를 제공한다. OPENXML이 행 집합 공급자이므로 테이블, 뷰 또는 OPENROWSET 함수 등의 행 집합 공급자가 있을 수 있는 T-SQL 문에 OPENXML을 사용 할 수 있다. XML 문서의 내부 표시는 sp_xml_preparedocumnet 를 호출하여 만들 수 있다. 실습을 위해 간단히 XML 문서를 정의 한다. 1002012-01-01 2002012-02-06 [SELECT 문에 OPENXML 사용] Sp_xml_preparedocument를 사용하여 XML 이미지의 내부 표현을 만든다. OPENXML 행 집합..