뇌를 자극하는 SQL Server 2005 10 장. 트랜잭션과 잠금. 뇌를 자극하는 SQL Server 2005 10 장. 트랜잭션과 잠금 2 / 18 트랜잭션 개념과 문법 트랜잭션 개념  하나의 논리적 작업단위로 수행되는 일련의 작업  전부 되거나, 전부 안 되거나의.

Slides:



Advertisements
Similar presentations
CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
Advertisements

이혁재 /KASA NoSQL. 요약 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머.
Oracle DB 구조 및 트랜잭션 관리 이경화 Database 의 구조 Program Global Area (PGA) Instance Database Buffer Cache Redo Log Buffer Library Cache Shared.
SQLWORLD.PE.KR 제 9 장 트랜잭션 INSIDE MICROSOFT SQL SERVER 2005: T-SQL PROGRAMMING.
SQL Server Index SQLER Vision 1 기 강 동 운.
SQL Server 2000 트랜잭션과 잠금 데브피아 세미나
제 3장 오라클 소개 오라클 소개 오라클 설치 방법 오라클 구조 제 3 장 오라클 개요.
DB2 Information Management DB2 UDB CLP Command Summary.
소리가 작으면 이어폰 사용 권장!.
데이터베이스 시스템.
안재훈 기업고객사업본부/기술사업부 한국마이크로소프트
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
18장. 데이터의 고가용성 (로그 전달, 데이터베이스 미러링, 복제)
You YoungSEok 고급 SQL You YoungSEok
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
SQL Server 2005 데이터베이스 가용성 강화 측면에서 본 데이터베이스 미러링과 스냅샷, 복제
Toad for Oracle 설치 방법.
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
Chapter 01 데이터베이스 시스템.
Supported Protocol 다음의 예문들은 CLP를 사용하는 방법들을 보여줍니다. 명령어들은 Windows의 DB2 명령창 프롬프트에서 실행합니다. 12. CLP 에서 +c 옵션을 이용하면 autocommit 모드가 사용되지 않으므로.
11장. 데이터베이스 서버 구축과 운영.
제 8장. 멀티미디어 데이터베이스 및 정보검색 시스템
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
장윤석과장 Technology Specialist (주)한국마이크로소프트
트랜잭션과 잠금 트랜잭션 처리 메커니즘을 자세히 이해한다. 트랜잭션의 종류를 파악한다.
ER-Win 사용 방법.
SQL Server™ 2000: DBA의 역할과 책임 하 성희.
SQL Server 2000 세미나 Profiler를 이용한 문제해결
차례 튜닝 - 프로필러를 이용한 튜닝 프로필러 친해지기 프로필러 결과 테이블로 만들기 프로필러 결과 분석하기
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
UniSQL 운영 및 튜닝 Education Course 한국컴퓨터통신㈜
트랜잭션(Transaction) I DBMS는 다수 사용자(Multi User) 용 대표적인 DB 응용
YOU Youngseok 트랜잭션(Transaction) YOU Youngseok
제 19 장 (Oracle) 오라클에서 동시성 제어 (MVCC)
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
트랜잭션 처리(Transaction Processing)
MS-SQL7.0 Implementation 강의 노트
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
SQL Server 7.0 세미나 (Performance Tuning)
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
[ 포털 사이트 연관검색어/자동완성 등록 서비스 ]
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
성균관대학교 전자전기컴퓨터공학과 오영환, 박효진
제 20 장 오라클에서 회복 및 백업 기능.
Windows 10 업그레이드 방지 관련 메뉴얼 목차 [1] Windows 10 업그레이드 예약 확인 / 취소
JSP 게시판 구현.
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
1조 김성수 백현기 석광우 김지원 박광연.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
학습목표 학습목표 본 장은 동시성 제어와 잠금(lock) 등 효과적인 트랜잭션 관리 기법 과 필요한 명령을 다룬다. 또한 데이터베이스의 장애에 대비하여 안전한 데이터의 관리를 위한 백업과 복원 기법, 서로 다른 DBMS 간이나 다른 서버 사이의 데이터 교환을 위한 데이터.
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
10장. 회복과 병행 제어 트랜잭션 장애와 회복 병행 제어.
NoSQL 박훈
SQL INJECTION MADE BY 김 현중.
MS-SQL7.0 Implementation 강의 노트
어린이집.
22강. 트랜잭션(Transaction)-I
Oracle 구성 Internet Application Server Database Server.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
타인을 내편으로 만드는 12가지 방법 고객서비스팀.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
데이터 베이스의 내부 구조.
Stored program 장종원
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
“전자구매” 메뉴 접속을 위해 “전자입찰” 메뉴에서 공인인증서 등록
Mariadb 트랜잭션과 동시성 제어 장종원
Presentation transcript:

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 2 / 18 트랜잭션 개념과 문법 트랜잭션 개념  하나의 논리적 작업단위로 수행되는 일련의 작업  전부 되거나, 전부 안 되거나의 의미가 포함되어 있음 ▫ 특성  원자성 (Atomicity)  일관성 (Consistency)  격리성 (Isolation)  영속성 (Durability) 트랜잭션의 문법 ▫ 구문 형식 BEGIN TRAN SQL 문 … COMMIT TRAN ( 또는 COMMIT WORK 또는 ROLLBACK TRAN)

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 3 / 18 트랜잭션의 종류 (1) 자동 커밋 트랜잭션 (Autocommit Transaction)  각 쿼리마다 자동적으로 BEGIN TRAN 과 COMMIT TRAN 이 붙여 짐  SQL Server 가 디폴트로 사용함 ▫ 사용 예 UPDATE 문 GO INSERT 문 BEGIN TRAN UPDATE 문 COMMIT TRAN GO BEGIN TRAN INSERT 문 COMMIT TRAN

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 4 / 18 트랜잭션의 종류 (2) 명시적 트랜잭션 (Explicit Transaction)  직접 BEGIN TRAN 과 COMMIT TRAN 을 써주는 것을 말함  대개는 BEGIN TRAN… END TRAN 만 붙여주면 됨 ▫ 구문 형식 BEGIN { TRAN | TRANSACTION } [ { transaction_name } [ WITH MARK [ 'description' ] ] ] SQL 문... 또는 SAVE { TRAN | TRANSACTION } { savepoint_name } …… COMMIT { TRAN | TRANSACTION } [ transaction_name ] ] 또는 ROLLBACK { TRAN | TRANSACTION } [ transaction_name | savepoint_name ]

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 5 / 18 트랜잭션의 종류 (3) 암시적 트랜잭션 (Implicit Transaction)  오라클 등과 호환을 위해서 사용될 수 있음  BEGIN TRAN 은 내부적으로 자동으로 붙여주지만, COMMIT TRAN 은 직접 써 줘야함  특별히 권장하지는 않음 ▫ 암시적 트랜잭션을 위해서 다음과 같이 설정해 주면 됨. SET IMPLICIT_TRANSACTIONS ON ▫ 실습 목표  트랜잭션의 기본적인 작동을 확인한다.  트랜잭션을 사용하지 않았을 때의 문제점을 확인한다. 트랜잭션을 사용하는 이유

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 6 / 18 트랜잭션의 활용 실습 목표 ▫ 자동커밋 트랜잭션, 명시적 트랜잭션, 암시적 트랜잭션을 실습한 다. ▫ SAVE TRAN 의 사용법을 익힌다. 사용된 SQL 예 BEGIN TRAN 번트랜잭션 UPDATE #tranTest SET id = 111; SAVE TRAN [tranPoint1] BEGIN TRAN -- 2 번트랜잭션 UPDATE #tranTest SET id = 222; SELECT * FROM #tranTest ROLLBACK TRAN [tranPoint1] -- 첫번째롤백 SELECT * FROM #tranTest ROLLBACK TRAN -- 두번째롤백 SELECT * FROM #tranTest

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 7 / 18 잠금 (Lock) 의 개념 개념  한 사용자가 데이터를 사용하고 있을 경우에, 다른 사용자가 그 데이터를 변경 하지 못하도록 하는 것  데이터베이스의 일관성을 위해서 필요함 ▫ 트랜잭션 격리 수준 (Transaction Isolation Level) 의 종류  READ UNCOMMITTED ( 커밋되지 않은 읽기 )  READ COMMITTED ( 커밋된 읽기 )  SQL Server 2005 의 디폴트 값  REPEATABLE READ ( 반복된 읽기 )  SNAPSHOT ( 스냅숏 )  SERIALIZABLE ( 직렬화 가능 ) ▫ 여러사용자가 동시에 하나의 데이터에 접근해서 발생하는 문제  Dirty Read ( 더티 리드, 커밋되지 않은 데이터를 읽기 )  Unrepeatable Read ( 반복되지 않은 읽기 )  Phantom Read ( 팬텀, 가상읽기 )

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 8 / 18 트랜잭션 격리 수준 (1) 더티 리드 (Dirty Read, 커밋되지 않은 데이터를 읽기 )  더티 페이지 (Dirty Page) 는 메모리에는 변경이 되었지만 디스크에는 아직 변경 되지 않은 데이터를 의미하며, 더티 리드는 이 더티 페이지를 읽는 것을 말함  문제점은 아직 커밋되지 않은 데이터를 읽어오기 때문에 더티 페이지를 읽은 후 에, 더티 페이지의 데이터가 롤백 된다면 이미 읽어온 데이터는 잘못된 데이터 가 된다는 점  데이터의 일관성은 떨어지지만, 동시성이 좋아서 커밋을 기다리지 않고 읽을 수 있는 장점이 있음  READ UNCOMMITTED 는 더티 리드를 허용해 줌 ▫ 실습 목표  트랜잭션 격리수준을 변경하는 방법을 확인한다.  더티 리드를 이해한다. 더티 리드

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 9 / 18 트랜잭션 격리 수준 (2) Unrepeatable Read ( 반복되지 않은 읽기 )  트랜잭션내에서 한번 읽은 데이터가 트랜잭션이 끝나기 전에 변경되었다면, 다 시 읽었을 경우에 새로운 값이 읽어지는 것  READ COMMITTED 에서 발생됨 (SQL Server 2005 디폴트 값 )  공유잠금 ( 주로 SELECT 문에 의해 발생 ) 중에도 데이터가 변경되는 문제가 있음.  이를 해결하기 위해서는 REPEATABLE READ 로 설정 ▫ 실습 목표  더티 리드를 해결하는 방법을 알아 본다.  ‘ 반복되지 않은 읽기 ’ 문제를 확인한다.  ‘ 반복되지 않은 읽기 ’ 문제를 해결하는 방법을 익힌다. 반복되지 않은 읽기

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 10 / 18 트랜잭션 격리 수준 (3) Phantom Read ( 팬텀 읽기, 가상읽기 )  REPETABLE READ 격리 수준에서는 트랜잭션이 진행중인 데이터에 대해서 변 경작업을 할 수 없지만, 새로운 데이터의 입력작업은 가능한 것을 말함.  이를 해결하기 위해서는 격리수준을 SERIALIZABLE 또는 SNAPSHOT, 으로 설 정 ▫ 실습 목표  팬텀 읽기의 현상을 확인해 본다.  팬텀 읽기의 해결책을 확인해 본다. 팬텀 읽기

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 11 / 18 트랜잭션 격리 수준 (4) 격리 수준과 동시성 부작용의 관계 동시성 부작용 격리 수준 Dirty Read ( 커밋되지 않은 데이터 읽기 ) Unrepeatable Read ( 반복되지 않은 읽기 ) Phantom Read ( 팬텀 읽기, 가상 읽기 ) READ UMCOMMITTED ( 커밋되지 않은 읽기 ) Yes READ COMMITTED ( 커밋된 읽기 ) NoYes REPEATABLE READ ( 반복된 읽기 ) No Yes SNAPSHOT ( 스냅숏 ) No ( 데이터의 입력은 됨 ) SERIALIZABLE ( 직렬화 가능 ) No ( 데이터의 입력 자체가 불가 능 )

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 12 / 18 잠금이 걸리는 리소스 개념  SQL Server 는 잠금을 거는 단위가 다양함.  작은 단위의 잠금은 동시성이 좋아지지만, 잠금의 수가 많아져서 오버헤드가 증 가함.  큰 단위의 잠금은 잠금의 수가 적어서 오버헤드는 감소하지만, 동시성은 나빠짐 ▫ SQL Server 에 잠금이 걸리는 리소스  RID : 행 식별자는 단일 행을 잠그는 데 사용  KEY : 인덱스 내의 행 잠금은 SERIALIZABLE 격리수준에서 사용  PAGE : 8KB 크기의 데이터페이지 또는 인덱스페이지  EXTENT : 8 개의 페이지가 연속된 것  HOBT : 클러스터형 인덱스가 없는 테이블에서 데이터 페이지나 인덱스를 보호하는 잠금  TABLE : 데이터와 인덱스가 포함된 전체 테이블  FILE : 데이터베이스 파일  APPLICATION : 응용 프로그램이 지정한 리소스  METADATA : 메타데이터  ALLOCATION_UNIT : 할당 단위  DATABASE : 전체 데이터베이스

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 13 / 18 잠금 모드 ( 종류 ) ▫ 잠금의 종류  공유 잠금 (S: Shared Lock) SELECT 문처럼 데이터를 읽는 작업에 사용한다. 공유잠금끼리는 서로 호환이 된다. 즉, 동시에 같은 데이터를 SELECT 할 수 있다는 의미이다.  배타 잠금 (X: Exclusive Lock) 데이터 수정 작업이 발생되는 INSERT/UPDATE/DELETE 에서 사용된다. 여러 개의 업데이 트 작업이 하나의 리소스에 동시에 수행되지 못하도록 방지한다. 배타 잠금은 다른 잠금 과 호환되지 않는다. 즉, 어떤 행을 변경하고 있을 때, 동시에 같은 행을 변경할 수 없다 는 의미이다.  업데이트 잠금 (U: Update Lock) 업데이트할 수 있는 리소스에 사용한다. 여러 사용자가 업데이트할 때 발생하는 교착상태 를 방지한다.  의도 잠금 (Intent Lock) 잠금 계층 구조를 만드는 데 사용된다. 의도 잠금의 종류에는 의도 공유 (IS), 의도 배타 (IX), 의도 배타 공유 (SIX) 가 있다.  스키마 잠금 (Schema Lock) 테이블의 스키마에 종속되는 작업이 실행될 때 사용된다. 스키마 잠금에는 스키마 수정 (Sch-M) 과 스키마 안정성 (Sch-S) 잠금이 있다.  대량 업데이트 잠금 (Bulk Update Lock) 데이터를 테이블로 대량 복사하는 경우와 TABLOCK 힌트가 지정된 경우 사용한다.  키 범위 잠금 SERIALIZABLE 트랜잭션 격리 수준을 사용할 때 쿼리가 읽는 행 범위를 보호한다.

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 14 / 18 잠금의 호환성 ▫ 개념  하나의 잠금이 일어 났을 때 다른 잠금이 일어날 수 있는지 여부 시도하는 잠금 기존 잠금 ISSUIXSIXX 의도 공유 (IS) YES NO 공유 (S) YES NO 업데이트 (U) YES NO 의도 배타 (IX) YESNO YESNO 의도 배타 공유 (SIX) YESNO 배타 (X) NO

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 15 / 18 잠금 힌트 실습 목표 ▫ 잠금의 정보를 확인하기 위한 시스템 뷰인 sys.dm_tran_locks 을 확 인한다. ▫ 잠금을 강제로 지정할 수 있는 잠금 힌트의 사용법을 익힌다. 잠금 정보 확인 예

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 16 / 18 블로킹 (Blocking) ▫ 개념  어떤 개체에 트랜잭션이 발생되면 (= 잠금이 생성되면 ) 다른 트랜잭션이 그 개 체에 접근할 수 없는 것  방지하기 위해서는 ‘LOCK_TIMEOUT’ 옵션을 설정 ▫ 실습 목표  블로킹이 걸린 것을 확인하고 이를 해결하는 방법을 익힌다. 블로킹 문제 해결

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 17 / 18 교착상태 (Deadlock) ▫ 개념  두 잠금이 서로 상대방의 잠금이 풀릴 때까지 계속 대기하는 상태.  SQL Server 가 자동으로 검색해서 한쪽을 희생시키는 방법으로 해결함  되도록 교착상태가 일어나지 않도록 하는 것이 시스템의 성능에 바람직함. ▫ 교착상태의 방지를 위한 권장방법  개체의 사용 순서를 교착상태가 발생되지 않게 설계한다.  트랜잭션 격리 수준을 디폴트인 READ COMMITTED 로 하고, 되도록 그 이상의 격리수준으로 변경하지 않는다.  하나의 트랜잭션에 너무 많은 쿼리를 넣지 않도록 한다. ▫ 실습 목표  SQL Server Profiler 를 이용해서 교착상태를 확인한다. 교착 상태

뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 18 / 18 분산 트랜잭션 (Distributed Transaction) ▫ 개념  서로 다른 두 서버에 데이터를 처리할 때 하나의 트랜잭션으로 처리하는 것  개념적으로는 하나의 트랜잭션과 동일한 개념이지만, 실제로 서버가 분리되어 있다는 것만 차이가 있을 뿐  문법적으로는 ‘BEGIN TRANSACTION’ 대신에 ‘BEGIN DISTRIBUTED TRANSACTION’ 을 사용해야 하며, 커밋은 동일하게 ‘COMMIT TRANSACTION’ 을 사용  분산트랜잭션이 시작되기 전에는 꼭 ‘XACT_ABORT’ 옵션을 ON 으로 설정해야 함 ▫ 실습 목표  두개의 인스턴스를 이용해서 분산 트랜잭션의 작동을 확인한다. 분산 트랜잭션