전체 글 1383

Sys.dm_os_performance_counter 해석하기

Sys.dm_os_performance_counter 해석하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영하는데 있어서 SQL Server 성능 카운터는 시스템의 상태를 측정 및 모니터링하는데 매우 중요한 도구 이다. Sys.dm_os_performance_counter DMV는 SQL Server의 다양한 카운터 값들을 제공한다. 하지만 이 값은 원시적인 값이기 때문에 해석하는 능력이 필요하다. 이번 포스트는 CSS SQL Server Engineer 팀 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려두며 자세한 내용은 원문을 참고하길 바란다. 다음 스크립트를 실행 하..

프로파일러를 이용한 중첩된 프로시저 디버깅

프로파일러를 이용한 중첩된 프로시저 디버깅 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 데이터베이스의 성능 튜닝을 위한 정보를 수집하거나 요청되는 쿼리, 발생하는 각종 정보를 수집하기 위해 프로파일러라는 도구를 사용한다. 프로파일러는 SQL Server 솔루션에서 제공하는 기본 도구로 무료로 사용할 수 있지만 기능은 매우 강력하다. 프로파일러 사용법(기본) : http://sqlmvp.kr/140149940592 위의 아티클에서 프로파일러의 기본 사용법을 숙지 하였다면 이번 시간에는 프로파일러에서 중첩된 프로시저에 대한 디버깅을 하는 방법을 알아보도록 한다. 우선 실습을 위해 다음 스크립트를 실행하여 중첩된 프로시저를 생성한다. Usp_a1을 ..

SAN 스토리지 성능 모니터 - SAN 스토리지를 사용하는 경우 성능 카운터를 어떻게 모니터링 할까?

SAN 스토리지 성능 모니터 SAN 스토리지를 사용하는 경우 성능 카운터를 어떻게 모니터링 할까? Version : SQL Server 2005, 2008, 2008R2, 2012 SAN 스토리지를 사용하는 경우 성능 모니터(performance counter)에 나타나는 숫자를 믿을 수 있을까? 이번 포스트는 sqlmag.com에 게시된 내용으로 필자가 읽고 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. SAN 스토리지를 사용하는 경우 카운터의 일부는 신뢰할 수 없다. 수 많은 카운터 중에 어떤 값이 신뢰할 수 있는 값이며 어떤 값이 신뢰 할 수 없는 값인지 구분 할 줄 아는 것은 매우 중요하다. 다음 목록을 통하여 SAN 스토리지 사용시 신뢰할 수 있는 값과 ..

저장된 Plan Cache 확인 및 활용

저장된 Plan Cache 확인 및 활용 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 요청된 쿼리는 컴파일 과정을 거쳐 실행 계획을 생성한다. 이때 요청된 쿼리에 따라 수 많은 계획이 생성될 수도 있고 기존의 계획이 재사용 될 수도 있다. 이번 포스트에서는 저장된 캐시 계획에 대한 활용방안을 살펴 보자. 비슷한 방식으로 실행 계획을 저장하는 SQL Server의 내부 메모리 영역(플랜캐시 또는 프로시저 캐시라고도 한다)이 있다. SQL Server는 기존 계획이 내부에 존재하는지 먼저 확인한다. 그리고 기존의 계획을 발견하게 되면 요청된 쿼리에 대해 새로운 계획에 대한 컴파일 시간을 할애 하지 않아도 된다. 이렇게 기존의 계획을 재사용하면 일반..

Xp_fixeddrives 세부 정보 확인하기

Xp_fixeddrives 세부 정보 확인하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 디스크 드라이브의 여유 공간을 확인하는 방법에는 여러 가지가 있지만 가장 쉽게 접근하는 방법으로는 xp_fixeddrives 함수를 사용하는 것이다. xp_fixeddrives Xp_fixeddrives 함수를 사용하여 드라이브의 여유 공간을 확인 하는데는 매우 편리한건 사실이다. 하지만 여기에 나머지 추가 정보를 더 확인 할 수 있으면 더 좋겠다는 생각이 든다. MSSQLTips.com에 포스트된 Kun Lee 글에서 xp_fixeddrives에 추가 정보를 확인 할 수 있는 스크립트를 공개하였다. [Kun lee 요구사항] 전체 디스크 크기 정보가 필..

강제 매개변수화로 인한 성능 저하 사례

강제 매개변수화로 인한 성능 저하 사례 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 쿼리 요청을 받으면 쿼리를 컴파일하고 통계 및 기타 정보를 이용하여 최적의 실행계획을 선택하여 사용한다. 쿼리 옵티마이저는 무조건 비용이 낮은 계획을 선택하지 않으며 여러 가지 상황을 고려하여 최적의 플랜을 선택 한다. SQL Server 쿼리 처리 아키텍처 : http://sqlmvp.kr/140188321707 이번 포스트는 SQL Server Premier Field Engineer Blog에 게시된 내용으로 강제 매개변수화로 인한 성능 저하의 사례를 소개하고 있다. 필자가 읽고 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알..

파라메터 스니핑과 데이터 스큐

파라메터 스니핑과 데이터 스큐 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 Procedure를 호출 할 때 대부분 잘 실행 되지만 간혹 매우 느리게 실행 될 때가 있다. 이런 현상을 다음 사례를 통해서 알아 보자. 이번 포스트는 SQL Server Premier Field Engineer Blog에 게시된 내용으로 필자가 읽고 이해한 내용을 정리 하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려 둔다. 자세한 내용은 원문을 참고하길 바란다. 대부분 이런 현상이 나타날 때 일반적인 상황은 파라메터 스니핑과 관계가 있다. 이 문제는 간혹 고르지 않은 데이터 분포 때문이다. 스큐된 데이터를 표시하고 있지만 파라메터 스니핑은 컴파일 타임에 알 수..

DBCC CHECKDB 버그 및 해결 방법

DBCC CHECKDB 버그 및 해결 방법 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 무결성 검사를 위해 DBCC CHECKDB 명령어를 제공 한다. DBCC CHECKDB는 컬럼의 값이 열의 데이터 형식의 법적 범위 내에 유효성을 검사하여 무결성을 판단한다. 이번 포스트는 SQLskills.com의 Paul Randal 아티클을 바탕으로 필자가 이해한 내용을 정리 하였으며 번역의 오류나 기술적 오류 가능성을 미리 알려둔다. SQL Server에서 master 데이터베이스에 손상(currption)을 발견되었고 DBCC CHECKDB는 이를 수행하지 않았다. (DBCC CHECKDB 코드 버그라기보다는 데이터베이스 생성시 버그인듯 하다고 한다...

NOLOCK HINT 이해

NOLOCK HINT 이해 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 데이터를 조회할 때 NOLOCK 힌트를 사용한 적이 있는가? 또한 NOLOCK 힌트는 어떻게 동작 할까? 하나의 스테이트먼트가 아닌 세션에 대해서 NOLOCK의 옵션을 사용하고 싶다면 READUNCOMMITTED를 사용할 수 도 있다. NOLOCK의 작동법을 확인하기 위해 몇 가지 예제를 살펴보자. 이번 실습은 AdventureWorks 데이터베이스의 Person.Contact 테이블을 사용 하였다. 다음 스크립트는 ContacID가 20보다 작은 값을 모두 반환한다. Suffix 컬럼의 값이 NULL을 포함한 다양한 값이 들어 있는 것을 확인 할 수 있다. SELECT *..

인증으로부터 분리된 사용자 방지

인증으로부터 분리된 사용자 방지 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 관리자가 겪는 문제 중 하나가 인증 관련문제로 '고아'가 발생하는 경우이다. SQL Server에서 SQL Server 로그인을 만들 때 문제가 발생 한다. 이 작업을 수행 할 때 SQL Server는 SQL Server 로그인에 대해 고유 SID를 생성한다. 로그인을 생성한 후 해당 서버 인스턴스의 사용자 데이터베이스에서 데이터베이스 사용자를 작성하고 해당 SQL Server 로그인을 사용하여 데이터베이스 사용자를 연결 한다. 다른 SQL Server 인스턴스에 해당 사용자 데이터베이스를 복원하려고 할 때 까지는 잘 작동하다가 서버에 이전과 동일한 사용자 ID를 가진 S..