SQL Server 818

DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기

DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 I/O 문제는 성능에 가장 큰 영향일 끼치는 요소 중 하나이다. I/O 대기 시간을 줄일 수 있다면 성능을 향상 시킬 수 있다. I/O 성능에 대한 부분은 근본적으로는 하드웨어의 성능과 밀접한 관련이 있다. 하지만 쿼리 튜닝을 통해서 어느 정도 해결 할 수 있다. DMV를 이용하여 I/O 분석을 위한 스냅샷을 만들어 보자. 특정 기간 또는 주기적으로 I/O를 수집하고 비교하여 잠재적인 I/O 병목 현상을 식별 할 수 있어야 한다. 이번 실습 방법은 1일 1회 또는 시간 당 1회 등 특정 간격으로 데이터를 수집하여 비교하여 스냅샷의 차..

DMV를 활용한 SQL Server 모니터링

DMV를 활용한 SQL Server 모니터링 Version : SQL Server 2005, 2008, 2008R2, 2012 아침에 출근하자 마자 야근한 동료에게서 서버가 너무 느려서 업무 처리에 힘들었다는 연락을 받았다. 어제 밤 SQL Server에 무슨 일이 있었던 걸까? 어떤 일이 있었는지 우리는 명쾌하게 답변을 할 수 있을까? DBA라면 SQL Server에 어떤 일이 일어나고 있는지 알아야 한다. 또한 모니터링 하는데 있어서 성능에 영향도 없어야 한다. 내가 없을 경우에도 모니터링을 하기 위해서는 지속적으로 모니터링 기록을 하는 도구가 필요하다. DMV를 통하여 지속적인 모니터링 기록을 남겨보자. 아래 스크립트는 SQL Server가 처리하고 있는 실행 코드를 캡처하는 기능을 제공한다. SE..

세션에 따른 캐시된 쿼리 플랜 설정 확인

세션에 따른 캐시된 쿼리 플랜 설정 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 사용자가 SQL 문장을 실행하면 User Process가 server Process에게 해당 SQL문장을 전달 한다. 전달받은 서버 프로세스는 해당 SQL 문을 처리하는데 다음과 같은 순서로 진행 된다. Parse는 SQL 문장에 쓰인 키워드나 컬럼명 등을 분석해서 Parse Tree를 생성하게 된다. Parse Tree를 만드는 과정에서 문법 검사. 의미검사 등을 하게 된다. 간혹 스펠링이 틀린 경우 Parse Tree 단계에서 오류가 발생하고 철자 오류는 없지만 테이블 등이 없는 경우 semantic Check에서 오류가 발생 한다. 해당 문법에 오류는 없는지, 해당 테이블이 존..

SQL Server 특정 세션에 대한 마지막 실행 문장 확인

SQL Server 특정 세션에 대한 마지막 실행 문장 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 특정 세션에서 마지막으로 실행한 쿼리를 확인하고 싶을 때 어떻게 할까? Sys.dm_exec_sql_text 라는 DMV와 SPID 값을 이용하여 특정 세션이 마지막 실행 쿼리를 확인 할 수 있다. SPID는 SQL Server인스턴스에서 세션을 식별할 수 있는 고유한 값이다. SPID를 확인 하는 방법은 해당 아래 스크립트 또는 SSMS에서 하단에 나타나는 정보로 확인 할 수 있다. 간혹 쿼리창이 연결된 상태에서 네트워크가 끊겻다 다시 붙는 경우 (쿼리창을 열어 둔채 서비스를 재실행 한 경우) SSMS의 하단에 나타나는 정보와 불일치 하는 경우도 있으니 스크립트..

DMV - 데이터베이스 버퍼 메모리 사용량 확인

DMV - 데이터베이스 버퍼 메모리 사용량 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 흔히 데이터베이스가 어느 정도 메모리를 사용하는가를 확인 할 때 작업관리자에서 프로세스 할당 메모리를 확인 하는 경우가 많다. 하지만 좀더 자세하게 각 인스턴스별 SQL Server 메모리 사용량을 확인 하고 싶을 때는 어떻게 할까? SQL Server 2005 부터 추가된 동적 관리 뷰(DMV)인 sys.dm_os_buffer_descriptors, sys.dm_os_performance_counter를 통하여 데이터베이스에 할당 된 버퍼 캐시 사용량 및 페이지 사용량을 확인 할 수 있다. 나의 로컬 머신에서 스크립트를 실행 해 보았다. 설치되어 있는 데이터베이스의 버퍼풀 ..

Sys.dm_fts_parser을 이용한 문자열 구문 분석

Sys.dm_fts_parser을 이용한 문자열 구문 분석 Version : SQL Server 2008, 2008R2, 2012 우리가 배열로 이루어진 문자열을 분할하여 단어의 목록을 보고 싶을 때가 있다. 과거에는 Like 함수나 parse 함수를 이용하여 특정 문자 단위로 잘라서 대칭표와 비교하기도 하였다. SQL Server 2008 부터는 DMF(동적 관리 함수)의 sys.dm_fts_parser을 사용하여 구문 분석을 할 수 있다. 이 함수는 단어 분리기, 동의어 사전, 중지 목록 조합을 쿼리 문자열 입력에 적용한 후 최종 토큰화 결과를 반환한다. 토큰화 결과는 지정된 쿼리 문자열에 대한 전체 텍스트 엔진의 출력과 같다. 함수를 사용하려면 sysadmin 고정 서버 역할 멤버 자격과 지정된 중..

DMV에서 SQL Server 리소스 데이터베이스 값

DMV에서 SQL Server 리소스 데이터베이스 값 Version : SQL Server 2005, 2008, 2008R2, 2012 DMV sys.dm_os_buffer_descriptors 통하여 시스템 데이터베이스 ID를 검색하여 보면 NULL 값이 나타난다. 어떻게 데이터베이스 이름이 NULL이 나타날 수 있을까? SQL Server 2005부터 도입된 새로운 시스템 데이터베이스로 인해 시스템 DMV나 카탈로그 뷰 내에서 노출 할 때 데이터베이스는 항상 32767의 database_id 값을 표시한다. (그렇다고 모든 리소스 데이터베이스가 노출 되지는 않는다.) 이때 데이터베이스 이름을 NULL로 반환한다. 데이터 페이지를 디스크에서 읽으면 해당 페이지가 SQL Server 버퍼풀에 복사되며 다..

키워드로 PROCEDURE, FUNCTION 찾기

키워드로 PROCEDURE, FUNCTION 찾기 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 개발 과정에서 많이 받는 질문 중 하나가 특정 테이블(키워드)을 사용하는 프로시저를 모두 찾을 수 있냐는 것이다. 당연히 프로시저 안에서 테이블을 호출 하는 코드가 있다면 검색이 가능하다. 시스템 테이블과 INFORMATION_SCHEMA.ROUTINE 방법을 이용하여 검색하는 방법을 알아 보자. [INFORMATION_SCHEMA.ROUTINE 사용] INFORMATION_SCHEMA.ROUTINE 을 사용한 방법이다. ROUTINE_DEFINITION : 사용자가 작성한 쿼리문 ROUTINE_TYPE에 : 프로시저 또는 함수 인지를 구분 프로시저 검색. SEL..

BCP 사용

BCP 사용 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 대량의 데이터를 내보내기 위한 방법에는 여러가지가 있다. SSIS를 이용하여 데이터를 내보낼 수도 있고 조회된 결과를 다른 이름으로 저장하여 파일로 저장 할 수도 있다. 하지만 대량의 데이터를 쉽고 빠르게 파일로 내보낼 수는 없을까? BCP를 사용하면 쉽고 빠르게 작업 할 수가 있다. BCP 유틸리티(BCP.exe)는 BCP(Bulk Copy Data) API를 사용하는 명령줄 도구이다. BCP는 다음과 같은 기능을 수행 할 수 있다. 데이터 파일로 SQL Server 테이블의 데이터를 대량으로 내보낸다. 쿼리의 데이터를 대량으로 내보낸다. SQL server 테이블로 데이터 파일의 데이터를 대량으로..

DATEADD를 사용한 날짜 추가 및 빼기

DATEADD를 사용한 날짜 추가 및 빼기 Version : SQL Server 2000, 2005, 2008R2, 2012 DATEADD 함수는 지정된 시간에 대해서 사용자가 원하는 시간을 더하거나 뺄 수 있다. DATEADD에 사용되는 시간 단위는 버전마다 약간의 차이가 있다. 단위SQL 2000, 20052008 / R2약어NANOSECONDNOYESnsMICROSECONDNOYESmcsMILLISECONDYESYESmsSECONDYESYESss, sMINUTSYESYESmi, nHOURYESYEShhWEEKDAYYESYESdw, wWEEKYESYESwk, wwDAYYESYESdd, dDAYOFYEARYESYESdy, yMONTHYESYESmm, mQUARTERYESYESqq, qYEARYESYES..