슬라이드 1

Similar documents
Microsoft PowerPoint - ch10_회복과 병행 제어.pptx

歯sql_tuning2

DBMS & SQL Server Installation Database Laboratory

뇌를자극하는 SQL Server < 이것만은알고갑시다 > 모범답안 2 장 1. Windows XP Home, Windows XP Professional, Windows Vista Basic, Window

Tablespace On-Offline 테이블스페이스 온라인/오프라인

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

PowerPoint 프레젠테이션

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

슬라이드 제목 없음

PowerPoint 프레젠테이션

MS-SQL SERVER 대비 기능

<4D F736F F F696E74202D2039C0E52DC6AEB7A3C0E8BCC72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint _Operating System Transactions.pptx

Windows 8에서 BioStar 1 설치하기

untitled

Tina Admin

목 차

PowerPoint Presentation

MySQL-.. 1

untitled

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

JDBC 소개및설치 Database Laboratory

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Oracle9i Real Application Clusters

Oracle Database 10g: Self-Managing Database DB TSC

C++Builder ADO Programming (5) - ADO Transaction, Errors

PowerPoint 프레젠테이션

NoSQL

Microsoft PowerPoint - Tech 2_광주대전 TimesTen Overview_print.ppt [호환 모드]

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Jerry Held

슬라이드 제목 없음

Cloud Friendly System Architecture


WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

10.ppt

제품소개

PowerPoint Presentation

슬라이드 1

arcplan Enterprise 6 Charting Facelifts

강의 개요

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

gisa_pil_070304_pdf.hwp

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Ç¥Áö

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Application 에서 Parameter 값을받아 JDBC Interface 로보내게되면적절한 JDBC Driver 를통해 SQL 을 Database 로보내주게되고결과를받아서사용자에게보여주게된다. 2-2 JDBC Interface JDBC 의핵심 Interface

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

6장. SQL

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Microsoft Word - 04_EXCEPTION.doc

62

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

슬라이드 1

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

초보자를 위한 분산 캐시 활용 전략

Microsoft PowerPoint - Session2 - Tibero 6

1217 WebTrafMon II

빅데이터시대 Self-BI 전략 이혁재이사 비아이씨엔에스

K7VT2_QIG_v3

Microsoft Word - 기술노트[23회] Logminer.doc

금오공대 컴퓨터공학전공 강의자료

Slide 1

Microsoft PowerPoint - 1_3_DBA_SQL_tuning

Windows 10 General Announcement v1.0-KO

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

PowerPoint Presentation

[Brochure] KOR_TunA

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

B _00_Ko_p1-p51.indd

SQL Server 교육

<4D F736F F F696E74202D20352E20BCBAB4C920C1DFBDC C F6EC0BB20C0A7C7D120BDC7BDC3B0A C3B3B8AEB9E6BEC

결과보고서

제목을 입력하세요.

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

Windows Server 2012

슬라이드 1

PowerPoint 프레젠테이션

Index

Remote UI Guide

Microsoft PowerPoint - JBossASTunning4BP.ppt

DocsPin_Korean.pages

FlashBackt.ppt

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

PowerPoint Presentation

DBPIA-NURIMEDIA

The Self-Managing Database : Automatic Health Monitoring and Alerting

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

最即時的Sybase ASE Server資料庫診斷工具

가상메모리 (Virtual Memory) Windows 운영체제에서하드디스크 (HDD) 의일부분을메모리 (Memory) 처럼활용하는기능. 고가용성 (HA, High Availability) 제공하는업무또는서비스의중단이최소화될수있도록구성된정도또는구성된상태 구성함수현재구성

LCD Display

ALTIBASE XDB Release Note APRIL 22, 2014

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

ALTIBASE HDB Patch Notes

13주-14주proc.PDF

쉽게 풀어쓴 C 프로그래밊

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Transcription:

12. 트랜잭션과잠금 여러개의데이터수정이하나의단위로수행되어야하는경우가많다. 그래서이중하나라도문제가발생한다면모든처리가다취소되어야한다. 모두다처리가되던지아니면아예하나도처리가안되든지... 이것이트랜잭션이다.

2 사랑차만드는법 사랑차준비물 1. 성냄과불평은뿌리를잘라내고잘게다진다. 2. 교만과자존심은속을빼낸후깨끗이씻어말린다. 3. 짜증은껍질을벗기고반으로토막을낸후에넓은맘으로절여둔다. 사랑차끓이는방법 1. 주전자에실망과미움을한컵씩붓고, 씨를잘빼낸다음불만을넣고푹끓인다. 2. 미리준비한재료를인내와기도를첨가하여재료가다녹고쓴맛이없어지기까지충분히달인다. 3. 기쁨과감사로잘젓고, 미소를몇개띄운후깨끗한믿음으로잔에부어서따뜻하게마신다.

트랜잭션과잠금 (Transactions and Locks) 트랜잭션 (Transactions) 트랜잭션은여러데이터수정이하나의단위로처리되게함 트랜잭션은잠금을사용하여완료되지않은트랜잭션의데이터를다른사용자가변경또는읽을수없게함 다중사용자시스템을위한온라인트랜잭션처리 (OLTP) 에는잠금이필요함 다중트랜잭션을관리할수있도록 SQL Server는트랜잭션처리를지원함 잠금 (Locks) 잠금은업데이트충돌을방지함 특정사용자는다른사용자가변경중인데이터를읽거나수정할수없음 3

4 트랜잭션시작 트랜잭션제어 (Controlling Transactions) 명시적트랜잭션 (Explicit Transactions) BEGIN TRANSACTION 으로트랜잭션시작 자동커밋트랜잭션 (Auto Commit Transactions) MS SQL 서버의기본모드 각 Transact-SQL 문은완료시자동으로커밋됨 암시적트랜잭션 (Implicit Transactions) SET IMPLICIT_TRANSACTION ON 으로설정 트랜잭션완료 COMMIT 모든트랜잭션에의한수정이데이터베이스에영구적으로적용됨 ROLLBACK 데이터를트랜잭션시작전상태로되돌려놓음

5 암시적트랜잭션옵션 (Implicit Transactions Option) 암시적트랜잭션모드가설정되면특정문수행시자동으로트랜잭션이시작됨 중첩된트랜잭션은허용되지않음 COMMIT 또는 ROLLBACK TRANSACTION 을통해트랜잭션이명시적으로커밋되거나롤백되어야함 이옵션은기본적으로 OFF 로설정되어있음 SET IMPLICIT_TRANSACTIONS ON

DEMO 트랜잭션의사용예를살펴봄

7 중첩트랜잭션 (1) (Nested Transactions) BEGIN TRAN SELECT @@TranCount -- 1 BEGIN TRAN SELECT @@TranCount -- 2 BEGIN TRAN SELECT @@TranCount -- 3 COMMIT SELECT @@TranCount -- 2 COMMIT SELECT @@TranCount -- 1 COMMIT SELECT @@TranCount -- 0

8 트랜잭션제어 (2) (Nested Transactions) BEGIN TRAN SELECT @@TranCount -- 1 BEGIN TRAN SELECT @@TranCount -- 2 BEGIN TRAN SELECT @@TranCount -- 3 ROLLBACK SELECT @@TranCount -- 0 COMMIT SELECT @@TranCount -- 0 COMMIT SELECT @@TranCount -- 0

9 포인트설정 (Save Point) BEGIN TRAN SELECT @@TranCount -- 1 BEGIN TRAN SAVE TRAN Tran_A SELECT @@TranCount -- 2 BEGIN TRAN SELECT @@TranCount -- 3 ROLLBACK Tran_A SELECT @@TranCount -- 3 COMMIT SELECT @@TranCount -- 2 COMMIT SELECT @@TranCount -- 1

DEMO 트랜잭션의중첩과 Save Point 에대해살펴봄

11 트랜잭션지원을위한속성 (ACID) 속성 원자성 (Atomicity) 일관성 (Consistency) 고립성 (Isolation) solation) 영속성 (Durability) 설명 트랜잭션의모든연산들이데이터베이스에모두적용되던지또는모두적용되지않아야한다. 데이터에대한무결성이유지되기위해서는데이터베이스내의모든규칙이트랜잭션에적용되어야한다. 즉규칙에위반되는트랜잭션은무결성을위해취소되어야만데이터베이스에일관성을유지할수있게된다. 현재의트랜잭션에의해변경되고있는데이터영역은다른사용자의트랜잭션영역으로부터분리되어야한다. 트랜잭션이정상적으로종료된후에는시스템오류가발생하더라도데이터를안정적으로저장시켜야한다.

12 트랜잭션처리 (How the Transaction Log Works) 1 사용자가데이터베이스변경작업을수행함 Buffer Cache 3 변경된내용을Disk에있는데이터베이스의트랜잭션로그파일에기록함 Disk 2 관련된데이터페이지가 Cache 에있는지확인하여 Cache 에있다면그내용을수정하고, Cache 에없다면 Disk 에서 Cache 로가져온후수정 4 Disk Checkpoint 라불리는프로세스가변경된페이지 (Dirty Pages) 를 Cache 로부터 Disk 에있는데이터베이스의데이터부분으로밀어냄

13 트랜잭션로그로부터정보를얻어처리함 SQL Server 시작시처리프로세스 롤포워드와롤백 (Roll Forward and Roll Back) 모든데이터베이스에대해서트랜잭션로그에기록된가장최근의 Checkpoint 시점을확인 이 Checkpoint 이후에 Commit된액션에대해롤포워드됨 (Redo Phase) 트랜잭션로그에 COMMIT TRAN 기록이없는모든오픈된트랜잭션은롤백됨 (Undo Phase) 롤포워드와롤백이모두수행된후데이터베이스접근이가능해짐 단 SQL Server 2005는 Redo 이후접근가능

14 트랜잭션복구및검사점 (Transaction Recovery Works) Transaction Recovery 1 2 Action Required None Roll forward 3 Roll back 4 Roll forward 5 (Roll back) 체크포인트 (Checkpoint) 시스템오류

15 트랜잭션을짧게유지 트랜잭션사용을위한고려사항 (Considerations for Using Transactions) WHILE 문과같은특정 Transact-SQL 문사용시주의 트랜잭션중사용자입력을요구하지않음 INSERT, UPDATE, DELETE 문이최소한의행수에영향을주도록함 데이터검색하는동안은가능하면트랜잭션을열지않음 트랜잭션중가능한최소양의데이터액세스 중첩트랜잭션 (Nesting Transactions) 트랜잭션은중첩될수는있지만권하지는않음 @@trancount를이용하여중첩의깊이를확인함

16 공유잠금 (Shared Lock) : S 데이터를읽을때자동으로공유잠금을얻음 여러프로세스가동일한데이터에대한공유잠금유지가능 공유잠금이있는데이터에서단독잠금을얻을수없음 일반적으로데이터를읽자마자공유잠금해제됨 잠금모드 (1) (Lock Mode) 쿼리힌트, 트랜잭션격리수준을이용해공유잠금해제를제어할수있음 단독잠금 (Exclusive Lock) : X 데이터가삽입, 업데이트, 삭제에의해변경될때단독잠금을얻음 한번에한프로세스만이단독잠금을유지할수있음 트랜잭션이커밋되거나롤백될때까지다른프로세스가변경된데이터를사용할수없음 힌트를사용함으로써다른프로세스들이단독잠금이유지된데이터를읽을수있음

17 업데이트잠금 (Update Lock) : U 잠금모드 (2) (Lock Mode) 변경될리소스를찾기위해테이블을검색할필요가있을때업데이트잠금이얻어짐 데이터를읽은후로데이터가변경되지않았다는것을확신하면서나중에데이터를변경할수있게함 나중에단독잠금을요청할수있게하는관문역할 한프로세스만이업데이트잠금을유지할수있음 특정프로세스가업데이트잠금을유지하는한다른프로세스가이자원에대해업데이트잠금이나단독잠금을얻을수없음 내재된잠금 (Intent Lock) : IS, IU, IX 리소스의구성요소가이미잠겨있음을알려주는잠금 내재된공유잠금 내재된단독잠금 내재된업데이트잠금

18 잠금모드 (3) 스키마안정성잠금 (Schema Stability Lock) : Sch-S (Lock Mode) 쿼리가컴파일될때다른프로세스들이스키마수정잠금을얻지못하도록함 스키마수정잠금 (Schema Modification Lock) : Sch-M 개체에대해 DDL 문이수행될때얻어짐 대량업데이트잠금 (Bulk Update Lock) : BU 다음중한가지가설정된상태에서대량복사작업이수행되는경우얻어짐 TABLOCK 힌트설정 table lock on bulk load 테이블옵션이설정된경우 키범위잠금 (Key-range Lock) : Range... Serializable 격리수준에서데이터범위를잠그려고할때얻어짐

DEMO 잠금모드의실제발생사례를살펴보고잠금정보가표시하는내용의의미를파악함

20 잠금호환성 (Lock Compatibility) 요청된모드 (Requested Mode) 기존에허용된모드 (Granted Mode) IS S U IX X Intent shared (IS) O O O O X Shared (S) O O O X X Update (U) O O X X X Intent exclusive (IX) O X X O X Exclusive (X) O X X X X

21 잠금으로방지되는동시성문제 (What Concurrency Problems Are Prevented by Locks?) 손실된업데이트 (Lost Update) 특정트랜잭션이다른트랜잭션의변경내용을덮어쓸경우업데이트가손실됨 커밋되지않은데이터읽기 (Dirty Read) 특정트랜잭션이다른트랜잭션의커밋되지않은데이터를읽은경우발생 일관성없는분석 (Inconsistent Analysis) 특정트랜잭션이같은행을두번이상읽을경우읽기사이에다른트랜잭션이해당행을수정하면일관성없는분석발생 팬텀읽기 (Phantom Reads) 트랜잭션이서로격리되지않을경우발생

22 트랜잭션격리수준 (Transaction Isolation Level) READ UNCOMMITTED NOLOCK을설정하는것과같아데이터를수정하는다른세션과충돌없음 Dirty Read를포함해앞페이지에서나열한동시성문제가발생함 다른격리수준에비해일관성을가장떨어지지만동시성은가장뛰어남 READ COMMITTED ( 기본값 ) 데이터를읽을때는공유잠금이유지되도록해서커밋되지않은데이터읽기가이루어지지않도록지정함 즉 Dirty Read 가발생하지않음 트랜잭션이끝나기전에데이터가변경되어반복하지않는읽기또는팬텀데이터가만들어질수있음 REPEATABLE READ 공유잠금을트랜잭션이종료할때까지유지하여다른사용자가데이터를업데이트할수없도록함 다른사용자가데이터집합에새허위행을삽입해현재트랜잭션의이후읽기에포함될수있음, 즉팬텀데이터존재

23 SERIALIZABLE 데이터집합에범위잠금을배치함 트랜잭션격리수준 (Transaction Isolation Level) 트랜잭션이완료될때까지다른사용자가행을업데이트하거나데이터집합에삽입할수없도록함 팬텀데이터가발생하지않음 SQL Server 2005 에추가된격리수준 Snapshot Read Committed Snapshot

DEMO 트랜잭션격리수준의네가지예를살펴봄으로써각각의특성을파악함

25 격리수준요약 (Summary of Isolation Levels) 격리수준 Dirty Reads Lost Updates Nonrepeatable Reads Phantoms Read Uncommitted Read Committed Repeatable Read O X X O O O O O O X X O Serializable X X X X

26 교착상태의희생자 (Victim) 교착상태 (Deadlocks) 메시지 1205, 수준 13, 상태 51, 줄 2 트랜잭션 ( 프로세스 ID 54) 이잠금리소스에서다른로세스와의교착상태가발생하여실행이중지되었습니다. 트랜잭션을다시실행하십시오. SET DEADLOCK_PRIOROTY LOW NORMAL (default) HIGH 인덱스가없는경우교착상태발생가능 하나의테이블에서도교착상태발생가능

DEMO 교착상태가발생할수있는경우에대해살펴봄

Time:PT1 X lock on CL idx row where keycol = 2 Granted Set col1 = <newval> UPDATE dbo.t1 SET col1 = <newval> WHERE keycol = 2 하나의테이블에서교착상태 (Deadlock with a Single Table) SELECT col2 FROM dbo.t1 WHERE col1 = 102 Connection 1 Connection 2 Time:PT2 S lock on NC idx row where col1 = 2 Granted CL Index on keycol NC Index on col1 keycol=2, col1=102,col2= B Time:PT3 Need to update NC idx row where col1 = 102 Request X lock Waiting Deadlock X Time:PT4 Need col2 from CL idx row Request S lock Waiting col1=102, CL Key=2 28

29 잠금정보표시 (View Locking Information) EM 의현재동작창 (Current Activity Window) sp_lock 시스템저장프로시저사용 SQL 프로필러 (SQL Profiler) 사용 윈도우의시스템모니터 (System Monitor) 사용 syslockinfo 와같은시스템테이블이용

정리