본문 바로가기

SQL SERVER8

SQL SERVER 프로파일 쿼리로 실행하기 오늘은 SQL SERVER 프로파일링 하는 방법에 대해 포스팅하겠습니다. SQL PROFILE 프로그램을 이용하여 프로파일링을 하는 방법도 있겠지만, 장시간 사용시 리소스가 과다하게 사용될 수 있으므로, 아래와 같이 T-SQL 형태로 수집하려고 합니다. 아래 내용도 SQL SERVER DBA 면접시 많이 나오는 질문중에 하나이므로, 이해하는 것이 좋을 것 같습니다. 프로파일링 SP 만들기 복잡해보이지만, 3가지 중요한 SP만 기억하면 쉽게 이해할 수 있습니다. 이 가운데 sp_trace_setfilter 를 통해 어떤 항목을 추적할 것인지, 설정값을 추가해주면 됩니다. sp_trace_create @TraceId OUT, @Options, @TraceFileName,@MaxFileSize, @StopTi.. 2022. 2. 16.
SQL SERVER 데드락(lock) 조회하기 오늘은 SQL SERVER의 데드락을 확인하는 방법에 대해 포스팅하겠습니다. 많이 아시는 방법으로는 sp_lock을 사용하여 조회하는 방법도 있지만, 보기 편하게 조작하기 위해 아래쿼리를 활용하면 업무에 많은 도움이 될 것 같습니다. 잠금 상태 만들기 우선 잠금이 될 테이블의 데이터를 update하는 쿼리를 실행하도록 하겠습니다. use Northwind go -- Session 1 BEGIN TRAN UPDATE Orders SET ShipName = 'test' where OrderID = 10248 waitfor delay '01:00' update 문이 실행중인 가운데, 조회하는 테이블을 동시에 실행하겠습니다. SELECT ShipName FROM Orders where OrderID = '102.. 2022. 2. 14.
인덱스 페이지 확인하는 방법 (FT. DBCC IND, DBCC PAGE) 이번시간엔 인덱스 파일을 확인 하는 방법에 대해 포스팅 하고자 합니다. 이전과 같이 SQL SERVER에서 제공하고 있는 'Northwind' 샘플 DB를 통해 진행하겠습니다. 인덱스 ID 확인 SELECT * FROM SYS.indexes WHERE object_id = OBJECT_ID('Orders') AND name = 'PK_Orders' 조회하고 싶은 인덱스의 id 값을 확인하기 위해 위 쿼리로 인덱스 상세정보를 조회합니다. 인덱스 파일 ID, 페이지 ID 값 확인 DBCC Ind(Northwind, Orders,1) DB명, 테이블명, 인덱스 (위 쿼리로 확인한 ID값) 을 차례로 넣어주면 아래와 같은 결과를 얻을 수 있습니다. 이 아래 데이터 가운데, INDEXLEVEL = 0인 데이터가 .. 2022. 2. 13.
SQL SERVER 인덱스 탐색방법 (INDEX SEEK, INDEX SCAN) 오늘은 SQL SERVER의 인덱스 탐색방법에 대해 포스팅 하고자 합니다. INDEX SCAN 인덱스의 리프 페이지를 모두 스캔하는 방식으로 수행됩니다. 흔히 말하는 풀스캔으로 이해하시면 좋을 것 같습니다. 실행계획에 표기된 INDEX SCAN 동작 방식이 무조건 성능 저하를 발생시키는 요인으로 알려져 있지만, 아래 케이스와 같이 예외적인 케이스가 있다는 것도 참고 하시길 바랍니다. INDEX SEEK (인덱스 탐색) 인덱스 탐색은 필요한 리프페이지만 탐색하여 접근합니다. 탐색 순서는 루트 -> 브랜치 -> 리프 페이지이며, 자세한 설명은 인덱스 페이지 구조 및 확인 방법에서 다시 포스팅할 예정입니다. 일반적인 OLTP 환경에서 적합한 방식이며, 옵티마이저 (성능 최적화 프로그램)이 INDEX SEEK .. 2022. 2. 12.