SQL Server 2000 MCDBA MCT http mssql ce
SQL Server 2000 트랜잭션과 잠금 데브피아 세미나 정원혁 / MCDBA, MCT http: //mssql. ce. ro http: //www. wtime. net http: //www. gtu. co. kr http: //www. inbrein. com -1 -
트랜잭션의 종류 v 암시적(implicit) 트랜잭션: 서버가 알아서 UPDATRE bigtable SET… WHERE … DELETE bigtable WHERE … => BEGIN TRAN UPDATRE bigtable SET… WHERE … COMMIT BEGIN TRAN DELETE bigtable WHERE … COMMIT -9 -
트랜잭션의 종류 v 명시적(explicit) 트랜잭션: 사용자가 지정 UPDATE 입고 SET… WHERE … UPDATE 재고 SET… WHERE … => BEGIN TRAN UPDATE 입고 SET… WHERE … UPDATE 재고 SET… WHERE … COMMIT -10 -
중첩 트랜잭션 v 트랜잭션 안에 또 트랜잭션 begin tran select @@trancount commit select @@trancount -11 -
중첩 트랜잭션 begin tran commit begin tran rollback commit -12 -
save tran v v begin tran n save tran AA n rollback tran AA commit -13 -
사용할 수 없는 문장 v v v BACKUP LOG RESTORE LOG CREATE DATABASE ALTER DATABASE DROP DATABASE RECONFIGURE UPDATE STATISTICS LOAD DATABASE LOAD TRANSACTION DUMP TRANSACTION DISK INIT -16 -
암시적 트랜잭션 모드 v 서버 수준에서 설정 가능 n EM 에서 n n n sp_configure ‘user options’, xxx reconfigure select @@options -17 -
Pages(참고) v v v Size: 8 K, 96 byte header Max Row Size: 8060 Max Key Size: 900 Max Number of Columns: 1024 Performance Improvements n Rows only compacted when necessary n Slot array used for binary search Torn Page Detection Page header Torn bits: 011011000…. . Row A Row C Row B Offset Slot array 460 200 100 -29 -
익스텐트(참고) v v 균일(Uniform) Contain 8 pages from a single object 혼합(Mixed) n Can contain pages from up to 8 objects Extent (8 pages = 64 K) T 1 8 K page T 2 T 1 Mixed Extent T 3 T 4 -30 -
페이지 훔쳐보기(참고) v v v v DBCC TRACEON (3604) DBCC PAGE (dbname, file번호, page번호, 옵션) DBCC TRACEOFF (3604) 예) dbcc page (pubs, 1, 205, 1) SELECT first FROM SYSINDEXES WHERE ID = object_id('titles') SELECT convert(int, 0 xcd) 옵션 0: 헤더만 1: 행 단위로 2: 페이지 그대로 3: 행 / 그리고 컬럼 값 -31 -
잠금 정보 얻기 sp_lock v v select @@spid select db_name( ) , object_name( ) file # , page #, rid # index id n 0: heap n 1: clustered n 2> : nonclustered n 255: image/ text -34 -
Blocking v v 앞에서 잠금 걸고 막고 있는 넘 sp_who , sp_who 2 n block by sp_lock n wait / grant dbcc inputbuffer( spid ) Real소스 SQLERBlk. ex e -36 -
격리 수준 v SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE -46 -
잠금 힌트 v v v v read. Uncommitted (nolock) read. Committed repeatable. Read serializable (holdlock) row. Lock pag. Lock tab. Lock. X -47 -
잠금 힌트 v upd. Lock v readpast -48 -
잠금 힌트 예 select title, au_lname from titles (TABLOCK) join titleauthor on titles. title_id = titleauthor. title_id join authors (PAGLOCK, HOLDLOCK, INDEX(1)) on authors. au_id = titleauthor. au_id -49 -
Blocking v v v v v 얼마나 오래 막고 있을까? set lock_timeout EM / 현재동작 lock hint: readpast @@trancount 클라이언트 버그 중첩 트랜잭션 처리 오류 > @@trancount 확인 dbcc inputbuffer sp_block kill -50 -
변환 교착 v 같은 대상에 대해 잠금을 변경하려고 할 때 set transaction isolation level repeatable read begin tran select * from titles where title_id = 'bu 1032' waitfor delay '0: 05' update titles set price = price * 2 where title_id = 'bu 1032' commit v 해결책? n updlock n readcomitted -53 -
Deadlock 최소화 v v v v 일방통행 짧게 폭좁게 set lock_timeout read uncommitted set deadlock_priority low 길을 넓힌다 주기적 모니터 -54 -
연결된 서버 v sp_addlinkedserver -56 -
openrowset SELECT * FROM OPENROWSET('SQLOLEDB', 'sqlinst'; 'sa'; '', 'SELECT * FROM pubs. dbo. authors ORDER BY au_lname, au_fname') -57 -
set xact_abort on begin tran 성공 if 실패 성공 commit v 결과는? -58 -
set xact_abort on v if @@error goto on_error: v 주로 신경 쓸 오류 n 515: not NULL 오류 n 544: identity insert n 547: 제약 위반 n 550: view WITH CHECK OPTION -59 -
분산 트랜잭션 v v v MSDTC on linked server 등록 (또는 openrowset) set xact_abort on begin distributed tran n server 1에서 작업 n server 2에서 작업 commit -60 -
트리거와 트랜잭션 트리거rollback. sql create trigger tr. A 1 ins on a 1 for insert as print 'rollback' rollback go begin tran insert a 1 values ('a') commit -- 동작 할까? select * from a 1 -64 -
중첩 트리거 A insert trigger B update trigger C rollback -65 -
syslockinfo v select * from master. . syslockinfo -70 -
sysprocesses v open_tran & sleeping -71 -
바운드 연결 v v v 둘 이상의 연결이 같은 트랜잭션과 잠금을 공유 sp_getbindtoken | srv_getbindtoken (ODS) sp_bindsession -72 -
- Slides: 74