YOU Youngseok yys@kangwon.ac.kr 트랜잭션(Transaction) YOU Youngseok yys@kangwon.ac.kr.

Slides:



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

1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
Oracle DB 구조 및 트랜잭션 관리 이경화 Database 의 구조 Program Global Area (PGA) Instance Database Buffer Cache Redo Log Buffer Library Cache Shared.
뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금. 뇌를 자극하는 SQL Server 장. 트랜잭션과 잠금 2 / 18 트랜잭션 개념과 문법 트랜잭션 개념  하나의 논리적 작업단위로 수행되는 일련의 작업  전부 되거나, 전부 안 되거나의.
SQL Server Index SQLER Vision 1 기 강 동 운.
SQL Server 2000 트랜잭션과 잠금 데브피아 세미나
SQLite 소개 및 안드로이드에서의 사용법
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
SQL 언어 SQL.
제 3장 오라클 소개 오라클 소개 오라클 설치 방법 오라클 구조 제 3 장 오라클 개요.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
소리가 작으면 이어폰 사용 권장!.
ORANGE 5.0 Get Started Created :
데이터베이스 시스템.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
Database & Internet Computing Laboratory 한 양 대 학 교
C#에서 데이터베이스 연동 방법.
제 5 장 인덱스 생성 및 관리.
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
AWR DB 보고서 분석.
JDBC 프로그래밍 이수지 이동주 1.
You YoungSEok 고급 SQL You YoungSEok
Chapter 02. 시스템 보안 : 건강한 시스템이 챙겨야 할 기본
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
SQL Server 2005 데이터베이스 가용성 강화 측면에서 본 데이터베이스 미러링과 스냅샷, 복제
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
12장 데이터 읽기 일관성과 락.
Toad for Oracle 설치 방법.
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
Chapter 01 데이터베이스 시스템.
Supported Protocol 다음의 예문들은 CLP를 사용하는 방법들을 보여줍니다. 명령어들은 Windows의 DB2 명령창 프롬프트에서 실행합니다. 12. CLP 에서 +c 옵션을 이용하면 autocommit 모드가 사용되지 않으므로.
11장. 데이터베이스 서버 구축과 운영.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
기초 T-SQL.
트랜잭션과 잠금 트랜잭션 처리 메커니즘을 자세히 이해한다. 트랜잭션의 종류를 파악한다.
Chapter 05 데이터베이스 프로그래밍.
소프트웨어시스템 실험 Software Systems Lab. 데이터베이스 기초
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
9장 테이블 생성 및 변경, 삭제하기(DDL).
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
SQL.
시스템 보안 정보 보안 개론 9장.
트랜잭션(Transaction) I DBMS는 다수 사용자(Multi User) 용 대표적인 DB 응용
제 19 장 (Oracle) 오라클에서 동시성 제어 (MVCC)
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
트랜잭션 처리(Transaction Processing)
You YoungSEok Oracle 설치 You YoungSEok
SQL (structured query language)
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
제 20 장 오라클에서 회복 및 백업 기능.
View(뷰) 1 가상 테이블(Virtual Relation)
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
학습목표 학습목표 본 장은 동시성 제어와 잠금(lock) 등 효과적인 트랜잭션 관리 기법 과 필요한 명령을 다룬다. 또한 데이터베이스의 장애에 대비하여 안전한 데이터의 관리를 위한 백업과 복원 기법, 서로 다른 DBMS 간이나 다른 서버 사이의 데이터 교환을 위한 데이터.
8장 테이블의 생성 및 변경 정인기.
10장. 회복과 병행 제어 트랜잭션 장애와 회복 병행 제어.
15 사용자 권한 제어 데이터베이스 보안 권한 롤 동의어.
06. SQL 명지대학교 ICT 융합대학 김정호.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
Stored program 장종원
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
Mariadb 트랜잭션과 동시성 제어 장종원
Presentation transcript:

YOU Youngseok yys@kangwon.ac.kr 트랜잭션(Transaction) YOU Youngseok yys@kangwon.ac.kr

트랜잭션 데이터베이스 시스템에서 최소의 업무처리 단위 SQL문의 하나의 논리적 작업 단위로 성공하거나 실패하는 일련의 SQL문 오라클 서버는 트랜잭션을 기본으로 데이터의 일관성을 보증

트랜잭션 1 2 3 4 5 6 7 8 트랜잭션 개별적으로는 트랜잭션이 아님 모두 모여 하나의 트랜잭션 데이터베이스 시스템에서 최소의 업무처리 단위 1 2 3 4 5 6 7 8 트랜잭션 개별적으로는 트랜잭션이 아님 모두 모여 하나의 트랜잭션

SQL DDL (Data Definition Language) DML (Data Manipulation Language) CREATE ALTER DROP TRUNCATE DML (Data Manipulation Language) SELECT INSERT DELETE UPDATE DCL (Data Control Language) COMMIT ROLLBACK GRANT: 사용자 권한 부여 REVOKE: 사용자 권한 취소

커밋과 롤백 커밋과 롤백은 DCL(Data Control Language)이다. 커밋(Commit) 롤백(Rollback) 트랜잭션에 의해 변경된 데이터에 대해 확정하는 문장 수행된 모든 문장에 대한 데이터의 변경 사항을 영구적으로 반영 실행 후 트랜잭션이 종료됨 롤백(Rollback) 트랜잭션의 변경을 취소하는 문장 세이브 포인트(Save Point) 트랜잭션의 특정위치로 롤백하는 문장

실습 테이블 Table Name: trantest

Commit & Rollback SQL 1 SQL 2 SQL 3 COMMIT 트랜잭션 트랜잭션 시작 트랜잭션 종료 ROLLBACK

Commit & Rollback

SAVE POINT SQL 1 SQL 2 SQL 3 COMMIT 트랜잭션 트랜잭션 시작 트랜잭션 종료 ROLLBACK TO A 부분적인 롤백을 가능하게 하기 위해 트랜잭션에 대한 중간 점을 정의 SQL 1 SQL 2 SQL 3 COMMIT 트랜잭션 트랜잭션 시작 트랜잭션 종료 ROLLBACK TO A SAVEPOINT A

SAVE POINT

오라클 아키텍처에 대한 대략적 설명

Redo & Undo segment Redo (다시하기) – Update 실행과정에서 알 수 있으니 Update 쿼리 실행과정을 보자

Redo & Undo segment Redo (다시하기) – Update 실행과정에서 알 수 있으니 Update 쿼리 실행과정을 보자

Redo & Undo segment Redo (다시하기) – Update 실행과정에서 알 수 있으니 Update 쿼리 실행과정을 보자

Redo & Undo segment Redo (다시하기) – Update 실행과정에서 알 수 있으니 Update 쿼리 실행과정을 보자 Redo Log file? : Redo log file은 Redo log buffer에 기록된 내용을 기록해 두는 파일이다. 장애가 발생시 Redo Log file을 보고 DB를 복구하게 된다. Commit? : Commit명령문을 실행시킨다고 디스크에 변경사항이 반영되지 않는다. Commit을 실행시키면 Redo Log Buffer에 있는 내용을 Redo File에 쓰게 되고, Redo File이 어느 정도 차거나, 시간이 일정시간 지나면 디스크에 변경사항을 저 장한다. SCN(System Commit Number) : Oracle은 Commit이 발생하게 되면 각각의 트 랜잭션(Commit이 트랜잭션 단위이니까)에 고유 번호를 부여하게 되는데 이 번호 가 SCN이다. Undo data : Undo Segment에 있는 data를 의미한다. 데이터를 복구하거나 회복 할 경우 사용한다.(또는 SCN을 비교해서 데이터를 참고할 때)

Oracle의 두가지 모드 Consistent vs Current Consistent는 말 그대로 일관된 읽기! Commit을 수행한 후 Redo log file에 있는 내용을 읽는 것을 의미한다. Current는 현재 데이터를 읽는 것을 의미하는데 현재 Update나 Insert를 수행한 데이터를 읽는 것을 의미한다. - 참고 사이트 주소 http://wiki.gurubee.net/display/STUDY/1st_Redo http://develop.sunshiny.co.kr/612 http://estenpark.tistory.com/304 http://1duffy.tistory.com/18 http://o2sunn.tistory.com/21

동시성 제어 트랜잭션이 동시에 수행 되면 발생할 수 있는 문제 Lost Update(갱신 손실): 갱신 내용을 잃어버림 Dirty Read(오손 판독): 존재하지 않는 값을 읽음 Non-Repeatable Read(비반복 읽기): 여러 번 읽을 때 값이 서로 다름 Phantom Read(유령 읽기): 읽는 범위 내에 존재하는 삭제/삽입된 유령 레코드를 읽음/읽지 못함 트랜잭션 고립 수준 명령어(transaction isolation level instruction) DBMS는 트랜잭션을 동시에 실행시키면서 Lock보다 좀 더 완화된 방법으로 문제를 해결하기 위해 제공하는 명령어 Oracle에서는 READ COMMITTED(Default), SERIALIZABLE 만 사용가능 SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 문제 고립 수준 Dirty read Non-Repeatable Read Phantom Read READ UNCOMMITTED 가능 READ COMMITTED 불가능 REPEATABLE READ SERIALIZABLE

SQL Developer을 2개 실행 SET autocommit OFF; commit; SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

갱신 손실 곰돌이 시간 힌둥이 Update 통장 set money = 10만 Where 이름 = 커플통장 T1 T2 뭐야 왜 5만원으로 되어있지? T3

트랜잭션 고립 수준 실습 Lost Update(갱신 손실)이 생기지 않는 실험 트랜잭션 T1 READ COMMITTED 모드 SELECT * FROM trantest WHERE empID = 'A002'; UPDATE trantest SET empName = '임꺽정' WHERE empID = 'A002'; UPDATE trantest SET empName = '강만중' --Wait; ROLLBACK; COMMIT;

비반복 읽기 문제 곰돌이 시간 힌둥이 Select money from 통장 Where 이름 = 커플통장 T1 T2 Update 통장 set money +=5만 Where 이름 = 커플통장; Commit; T3 뭐야 왜 5만원이 더 들어 있지? T4

트랜잭션 고립 수준 실습 Non-Repeatable Read(비반복 읽기) 문제 발생 실험 트랜잭션 T1 READ COMMITTED 모드 트랜잭션 T2 SELECT * FROM trantest WHERE empID = 'A002'; UPDATE trantest SET empName = '임꺽정' WHERE empID = 'A002'; COMMIT; --앞의 결과와 다름

트랜잭션 고립 수준 실습 Non-Repeatable Read(비반복 읽기) 문제 방지 실험 트랜잭션 T1 READ COMMITTED 모드 트랜잭션 T2 SELECT * FROM trantest WHERE empID = 'A002' FOR UPDATE; --트랜잭션 Lock을 걸어 데이터가 잘못 갱신되는 문제를 방지 UPDATE trantest SET empName = '강만중' WHERE empID = 'A002'; --Wait, T1이 COMMIT하면 실행됨 SELECT * FROM trantest WHERE empID = 'A002'; --결과는 위와 같음(T2 Commit이 아직 안됐으므로) COMMIT;

유령레코드 문제 곰돌이 시간 힌둥이 Select 사용기록 from 통장 Where 이름 = 커플통장 T1 T2 Insert into 통장 values(‘사용’,5만); T3 T4 뭐지… 그 사이에 왜 2개의 기록이 추가된 거지 나는 쓴 적 없는데.. T5

트랜잭션 고립 수준 실습 PHANTOM(유령) 레코드 문제 발생 실험 트랜잭션 T1 READ COMMITTED 모드 SELECT * FROM trantest FOR UPDATE; INSERT INTO trantest VALUES('A007', '박찬호'); COMMIT; -- A007이 유령 레코드가 됨 -- 따라서 두 셀렉트 문의 결과가 달라짐