INSIDE MICROSOFT SQL SERVER 2005 TSQL PROGRAMMING 9

  • Slides: 17
Download presentation
INSIDE MICROSOFT SQL SERVER 2005: T-SQL PROGRAMMING 제 9장 트랜잭션 SQLWORLD. PE. KR

INSIDE MICROSOFT SQL SERVER 2005: T-SQL PROGRAMMING 제 9장 트랜잭션 SQLWORLD. PE. KR

잠금 호환성 의도 공유(IS) IS Yes 허용 모드 S U IX Yes Yes X

잠금 호환성 의도 공유(IS) IS Yes 허용 모드 S U IX Yes Yes X No 공유(S) Yes Yes No No 업데이트(U) Yes No No No 의도 배타(IX) Yes No No Yes No 배타(X) No No No 요청 모드 SQLWORLD. PE. KR 5

잠금에 대한 정보 동적 관리 뷰(Dynamic Management View) sys. dm_tran_locks sys. dm_exec_connections sys. dm_exec_sessions

잠금에 대한 정보 동적 관리 뷰(Dynamic Management View) sys. dm_tran_locks sys. dm_exec_connections sys. dm_exec_sessions sys. dm_exec_requests 동적 관리 함수(Dynamic Management Function) sys. dm_exec_sql_text SELECT session_id, text FROM sys. dm_exec_connections CROSS APPLY sys. dm_exec_sql_text(most_recent_sql_handle) AS ST WHERE session_id IN(52, 53); GO SQLWORLD. PE. KR 6

격리 수준 동시성과 일관성 동시성이 안 좋으면 일관성이 향상 됨 동시성이 좋으면 일관성이 나빠짐

격리 수준 동시성과 일관성 동시성이 안 좋으면 일관성이 향상 됨 동시성이 좋으면 일관성이 나빠짐 격리 수준(Isolation Levels) 커밋되지 않은 읽기(Read Uncommitted) 커밋된 읽기(Read Committed: Default Isolation Level) 반복 읽기(Repeatable Read) 직렬화 읽기(Serializable) 스냅샷(Snapshot) 커밋된 읽기 스냅샷(Read Committed Snapshot) 일관성과 관련된 문제(Consistency Related Problems) 커밋되지 않은 읽기(Dirty Read) 업데이트 손실(Lost Updates) 반복되지 않은 읽기(Non-repeatable Reads) 팬텀 읽기(Phantoms) SQLWORLD. PE. KR 8

스냅샷(Snapshot) 스냅샷 격리 수준(Snapshot Isolation) 트랜잭션이 시작되었을 당시에 사용 가능한 가장 최근의 일관성 있는

스냅샷(Snapshot) 스냅샷 격리 수준(Snapshot Isolation) 트랜잭션이 시작되었을 당시에 사용 가능한 가장 최근의 일관성 있는 버전의 데이터를 가져옴 데이터베이스 옵션 ALLOW_SNAPSHOT_ISOLATION ON 행 버전(Row Version) 확인 sys. dm_tran_version_store 격리 수준 설정 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 업데이트 충돌(Update Conflict) SQLWORLD. PE. KR 9

문제 해결 추적 플래그 설정 플래그 1204, 1222 교착상태 발생시 에러 로그 기록됨 SQL

문제 해결 추적 플래그 설정 플래그 1204, 1222 교착상태 발생시 에러 로그 기록됨 SQL Server Profiler SQL: Stmt. Starting Lock: Timeout Lock: Deadlock Chain Lock: Deadlock: Graph SQL Server 2005의 새로운 이벤트 교착 상태의 정보를 XML 값으로 생성해 줌 SQLWORLD. PE. KR 15

단일 테이블에서의 교착 상태 연결 1 Time: PT 1 X lock on CL idx

단일 테이블에서의 교착 상태 연결 1 Time: PT 1 X lock on CL idx row where keycol = 2 Granted Set col 1 = <newval> 연결 2 UPDATE dbo. T 1 SET col 1 = <newval> WHERE keycol = 2 SELECT col 2 FROM dbo. T 1 WHERE col 1 = 102 NC Index on col 1 CL Index on keycol … keycol=2, col 1=102, col 2 =‘B’ … SQLWORLD. PE. KR Time: PT 2 S lock on NC idx row where col 1 = 2 Granted Deadlock Time: PT 3 Time: PT 4 Need to update Need col 2 from NC idx row CL idx row where col 1 = 102 Request S lock Request X lock Waiting X … col 1=102, CL Key=2 … 16