-
MSSQL 세션 정보 확인Database 2020. 10. 26. 16:56728x90
db가 갑자기 느려지는 경우 sp_lock 명령어로 세션을 확인한다.
실행 후 나오는 값에 대하여 아래와 같이 정리되어 있다.
spid smallint 잠금을 요청하는 프로세스의 데이터베이스 엔진 세션 ID입니다.
dbid smallint 잠금이 설정된 데이터베이스의 ID입니다. DB_NAME() 함수를 사용하여 데이터베이스를 식별할 수 있습니다.
ObjId int 잠금이 설정된 개체의 ID입니다. 관련 데이터베이스에서 OBJECT_NAME() 함수를 사용하여 개체를 식별할 수 있습니다. 값 99는 특별한 경우로서 데이터베이스에서 페이지 할당을 기록하는 데 사용되는 시스템 페이지 중 하나에 대한 잠금을 나타냅니다.
IndId smallint 잠금이 설정된 인덱스의 ID입니다.
Type nchar (4) 잠금 유형입니다.
RID = RID(행 식별자)로 식별되는 테이블의 단일 행에 대한 잠금입니다.
KEY = 직렬화할 수 있는 트랜잭션에서 키의 범위를 보호하는 인덱스 내의 잠금입니다.
PAG = 데이터 또는 인덱스 페이지에 대한 잠금입니다.
EXT = 익스텐트에 대한 잠금입니다.
TAB = 모든 데이터와 인덱스가 포함된 전체 테이블에 대한 잠금입니다.
DB = 데이터베이스에 대한 잠금입니다.
FIL = 데이터베이스 파일에 대한 잠금입니다.
APP = 애플리케이션이 지정한 리소스에 대한 잠금입니다.
MD = 메타데이터 또는 카탈로그 정보에 대한 잠금입니다.
HBT = 힙 또는 B-트리의 잠금 (HoBT). 이 정보는 SQL Server에서는 완전하지 않습니다.
AU = 할당 단위에 대한 잠금입니다. 이 정보는 SQL Server에서는 완전하지 않습니다.
Resource nchar(32) 잠긴 리소스를 식별하는 값입니다. 값의 형식은 유형 열에서 식별 되는 리소스 유형에 따라 달라 집니다.
유형 값: 리소스 값
RID: fileid: pagenumber: rid 형식의 식별자입니다. 여기서 fileid는 페이지가 포함 된 파일을 식별 하 고 pagenumber는 행이 포함 된 페이지를 식별 하며 rid는 페이지의 특정 행을 식별 합니다. fileid는 database_files 카탈로그 뷰의 file_id 열과 일치 합니다.
키:에서 내부적으로 사용 되는 16 진수 데이터베이스 엔진 입니다.
PAG: fileid: pagenumber 형식의 숫자입니다. 여기서 fileid는 페이지가 포함 된 파일을 식별 하 고 pagenumber는 페이지를 식별 합니다.
EXT: 익스텐트의 첫 번째 페이지를 식별 하는 번호입니다. 이 번호의 형식은 fileid:pagenumber입니다.
TAB: ObjId 열에서 테이블이 이미 식별 되었으므로 정보가 제공 되지 않습니다.
DB: dbid 열에서 데이터베이스가 이미 식별 되었으므로 정보가 제공 되지 않았습니다.
FIL: database_files 카탈로그 뷰의 file_id 열과 일치 하는 파일의 식별자입니다.
app: 잠겨 있는 응용 프로그램 리소스에 고유한 식별자입니다. DbPrincipleId: 형식으로 지정 <first two to 16 characters of the resource string> <hashed value> 합니다.
MD: 리소스 유형에 따라 달라집니다. 자세한 내용은 dm_tran_locks (transact-sql)에서 resource_description 열에 대 한 설명을 참조 하세요.
HBT: 제공 된 정보가 없습니다. 대신 dm_tran_locks 동적 관리 뷰를 사용 하십시오.
AU: 제공 된 정보가 없습니다. 대신 dm_tran_locks 동적 관리 뷰를 사용 하십시오.
Mode nvarchar(8) 요청한 잠금 모드입니다. 다음 값 중 하나일 수 있습니다.
NULL = 리소스에 대해 허가된 액세스가 없습니다. 자리 표시자 역할을 합니다.
Sch-S = 스키마 안전성. 특정 세션이 스키마 요소에 대해 스키마 안전성 잠금을 보유하고 있는 동안 테이블 또는 인덱스 등의 스키마 요소가 삭제되지 않도록 합니다.
Sch-M = 스키마 수정. 지정한 리소스의 스키마를 변경하려는 세션이 보유해야 하는 잠금 모드입니다. 다른 세션이 표시된 개체를 참조하지 않도록 합니다.
S = 공유. 보유 중인 세션이 리소스에 공유된 액세스를 할 수 있도록 권한을 부여합니다.
U = 업데이트. 업데이트될 리소스에 대해 업데이트 잠금을 획득하도록 합니다. 이후에 업데이트할 가능성을 위해 여러 세션이 리소스를 잠그는 경우 발생하는 일반적인 형태의 교착 상태를 방지하기 위해 사용합니다.
X = 배타. 보유 중인 세션이 리소스에 배타적으로 액세스할 수 있도록 권한을 부여합니다.
IS = 내재된 공유. 잠금 계층 구조의 일부 하위 리소스에 S 잠금을 설정하려는 의도를 표시합니다.
IU = 의도 업데이트. 잠금 계층 구조의 일부 하위 리소스에 U 잠금을 설정하려는 의도를 표시합니다.
IX = 의도 배타. 잠금 계층 구조의 일부 하위 리소스에 X 잠금을 설정하려는 의도를 표시합니다.
SIU = 공유 의도 업데이트. 잠금 계층 구조의 하위 리소스에 대한 업데이트 잠금을 획득하기 위해 리소스에 대한 공유된 액세스를 표시합니다.
SIX = 공유 의도 배타. 잠금 계층 구조의 하위 리소스에 대한 배타적 잠금을 획득하기 위해 리소스에 대한 공유된 액세스를 표시합니다.
UIX = 업데이트 의도 배타. 잠금 계층 구조의 하위 리소스에 대한 배타적 잠금을 획득하기 위해 리소스에 업데이트 잠금을 보유함을 표시합니다.
BU = 대량 업데이트. 대량 작업에 사용합니다.
RangeS_S = 공유 키 범위 및 공유 리소스 잠금. 직렬화 가능 범위 검색을 표시합니다.
RangeS_U = 공유 키 범위 및 업데이트 리소스 잠금. 직렬화 가능 업데이트 검색을 표시합니다.
RangeI_N = 삽입 키 범위 및 Null 리소스 잠금. 새 키를 인덱스에 삽입하기 전에 범위를 테스트하는 데 사용됩니다.
RangeI_S = 키 범위 변환 잠금. RangeI_N 및 S 잠금의 겹침으로 생성됩니다.
RangeI_U = RangeI_N 및 U 잠금의 겹침으로 생성된 키 범위 변환 잠금.
RangeI_X = RangeI_N 및 X 잠금의 겹침으로 생성된 키 범위 변환 잠금.
RangeI_X_S = RangeI_N 및 RangeS_S 잠금의 겹침으로 생성된 키 범위 변환 잠금입니다.
RangeI_X_U = RangeI_N 및 RangeS_U 잠금의 겹침으로 생성된 키 범위 변환 잠금.
RangeX_X = 배타 키 범위 및 배타 리소스 잠금. 범위 내에서 키를 업데이트할 때 사용되는 변환 잠금입니다.
Status nvarchar (5) 잠금 요청 상태입니다.
CNVRT: 다른 모드에서 잠금을 변환 중이지만 충돌 하는 모드의 잠금을 보유 하는 다른 프로세스에 의해 변환이 차단 됩니다.
GRANT: 잠금을 가져왔습니다.
대기: 충돌 하는 모드의 잠금을 보유 하는 다른 프로세스에 의해 잠금이 차단 되었습니다.상태를 확인하고
-- 수행된 쿼리정보 확인
dbcc inputbuffer('session_id')해당 세션 아이디가 사용하고 있는 쿼리를 확인하고
누가 사용하는지 상세 정보 확인 후
sp_who 67;해당 프로세스를 kill할 것인지 판단하도록한다.
insert 나 update시 kill하면 중간에 데이터가 날아갈수있으므로 조심하도록한다.
아래 쿼리는 참고하도록 하자.
--현재 인스턴스에서 사용되고 있는 클라이언트 + 시스템 프로세스 select hostname --호스트명 , program_name --프로그램명 , hostprocess --프로세스명 , loginame --로그인명 , waittime --현재대기시간 , cpu --누적 CPU 사용시간 , login_time --로그인 시간 , last_batch --마지막 호출시간 , status --상태 , cmd --실행중인명령 , open_tran --트랜잭션 수 , nt_domain --도메인명 , nt_username --유저명 , net_address --MAC 주소 , spid --세션ID , kpid --쓰레드ID , dbid --디비ID , uid --유저ID , request_id --요청ID , lastwaittype --대기유형 from master..sysprocesses where status not like 'background' + '%'
728x90반응형'Database' 카테고리의 다른 글
오라클 vs MS SQL 함수 비교 (0) 2020.10.30 MSSQL 튜닝 기초 (0) 2020.10.30 MSSQL 특정문자열을 사용하는 SP,VIEW,Function,Trigger 찾기 (0) 2020.10.29 인덱스 조각 상태 쿼리 MS-SQL (0) 2020.10.22 N:N 데이터 관계 모델링 (0) 2020.10.21