12장 데이터 읽기 일관성과 락.

Slides:



Advertisements
Similar presentations
1 강. 1.MYSQL 이란 ? MySQL 서버란 데이터를 관리해 주는 서버프로그램이다. mysql 은 MySQL 서버에 접속하여서 사용자가 명령을 입력할 수 있게 해주는 클라이언트 프로그램이다. MySQL 주요 기능 Kernel threads 를 이용, 완벽한 multi-threaded.
Advertisements

SQLWORLD.PE.KR 제 9 장 트랜잭션 INSIDE MICROSOFT SQL SERVER 2005: T-SQL PROGRAMMING.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
SQL 언어 SQL.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
Database & Internet Computing Laboratory 한 양 대 학 교
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
You YoungSEok 고급 SQL You YoungSEok
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
8장 서브 쿼리.
SQL SQL 불펌하지 마세요!!!!!!!! 불펌 금지.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
kHS 데이터베이스 테이블 및 인덱스 kHS.
SQL*PLUS.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
트랜잭션과 잠금 트랜잭션 처리 메커니즘을 자세히 이해한다. 트랜잭션의 종류를 파악한다.
14장 뷰.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
6장 그룹 함수.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
19장. 트랜잭션과 락(LOCK) 트랜잭션이란? MySQL의 트랜잭션 락(LOCK) 쉽게 배우는 MySQL 5.x
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
9장 테이블 생성 및 변경, 삭제하기(DDL).
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
KHS JDBC Programming 4 KHS
YOU Youngseok 트랜잭션(Transaction) YOU Youngseok
제 19 장 (Oracle) 오라클에서 동시성 제어 (MVCC)
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
13장 무결성 제약조건.
JDBC Lecture 004 By MINIO.
3장. SQL Server 2008 전체 운영 실습 및 DB와 프로그램의 연동
View(뷰) 1 가상 테이블(Virtual Relation)
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
8장 테이블의 생성 및 변경 정인기.
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
문성우 SQL 실습 Part Ⅰ 문성우.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
오라클 11g 보안.
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
7장 테이블 조인하기.
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
Mariadb 트랜잭션과 동시성 제어 장종원
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
11장. 보안과 권한 관리 보안 권한 관리. 11장. 보안과 권한 관리 보안 권한 관리.
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

12장 데이터 읽기 일관성과 락

목 차 데이터 읽기 일관성과 락 데드락 테이블 갱신시 발생한 락을 해결하는 방법 DDL명령의 롤백 Truncate 와 Delete의 차이

데이터 읽기 일관성과 락 (- 주간) 사용자가 동일한 데이터를 읽도록 하기 위하여 수정하기 전 자동으로 롤백세그먼트에 before image(복사본) 저장 Commit 이나 rollback에 의해 정보 수정가능 rollback에 의해 롤백세그먼트에 있던 복사본이 원상복귀 됨. 준비 사항 Scott의 emp, dept 테이블의 조회 권한을 scott_j 에게 부여 SQL> conn system/soft SQL> GRANT select on scott.emp to scott_j; SQL> GRANT select on scott.dept to scott_j;

데이터 읽기 일관성과 락 (- 주간) 1. SELECT * FROM em1 2.DELETE em1 SQL> conn scott_j/tiger SQL> CREATE TABLE em1 AS SELECT * FROM scott.emp; 로그인을 두 번 함 A : SQL> conn scott_j/tiger B : SQL> conn scott_j/tiger A(사용자:서울본사직원) B(사용자:대전지사직원)   1. SELECT *  FROM  em1       WHERE   empno=7788;                      3. UPDATE em1        SET sal=200      WHERE empno=7788;     Locking(무한대기상태)......    5.1 행이 갱신되었습니다. SQL> 2.DELETE  em1      WHERE empno=7788;   1행이 삭제되었습니다.       4.ROLLBACK;  Locking 해제

데이터 읽기 일관성과 락 사용자가 동일한 데이터를 읽도록 하기 위하여 수정하기 전 자동으로 롤백세그먼트에 before image(복사본) 저장 Commit 이나 rollback에 의해 정보 수정가능 rollback에 의해 롤백세그먼트에 있던 복사본이 원상복귀 됨. 준비 사항 Scott의 emp, dept 테이블의 조회 권한을 scott_y 에게 부여 SQL> conn system/soft SQL> GRANT select on scott.emp to scott_y; SQL> GRANT select on scott.dept to scott_y; 5

데이터 읽기 일관성과 락 1. SELECT * FROM em1 2.DELETE em1 WHERE empno=7788; SQL> conn scott_y/tiger SQL> CREATE TABLE em1 AS SELECT * FROM scott.emp; 로그인을 두 번 함 A : SQL> conn scott_y/tiger B : SQL> conn scott_y/tiger A(사용자:서울본사직원) B(사용자:대전지사직원)   1. SELECT *  FROM  em1       WHERE   empno=7788;                      3. UPDATE em1        SET sal=200      WHERE empno=7788;     Locking(무한대기상태)......    5.1 행이 갱신되었습니다. SQL> 2.DELETE  em1      WHERE empno=7788;   1행이 삭제되었습니다.       4.ROLLBACK;  Locking 해제 6

데드 락(dead lock, 교착상태 ) Locking(무한대기상태).... Locking(무한대기상태)... 데드락 교차로에서 자동차들이 교착상태에 빠진 것. A 와 B가 서로 lock 에 걸림으로써 아무 작업도 할 수 없는 상태 A(사용자:서울본사직원) B(사용자:대전지사직원) 1. UPDATE em1 SET  sal=100     WHERE  ename='SCOTT';                               3. UPDATE em1 SET  sal=300     WHERE ename='SMITH' ; Locking(무한대기상태)....                    2. UPDATE em1 SET  sal=20      WHERE  ename=‘SMITH’;     4. UPDATE em1 SET  sal=400      WHERE  ename='SCOTT';   Locking(무한대기상태)... ‘ORA-00060: 자원대기중 교착상태가 검출.’ 메시지와 함께 비정상 종료로 자동 롤백  B 는 여전히 물려있으므로 rollback으로 locking 해제해야 함.

락과 TCL 커밋(Commit) 롤백(Rollback) 트랜잭션을 데이터베이스에 반영. 트랜잭션을 데이터베이스에서 취소. 락 해제. 트랜잭션이 종료. 정상 종료시 자동 커밋(Auto Commit) 비정상 종료시 자동 롤백(Auto Rollback) 자동 커밋 :- DDL 사용시 - DDL 오류시 자동 롤백 :- 비정상 종료시 - deadlock 검출시

테이블 갱신 시 발생한 락 해결 방법 문제 제시 ALTER TABLE 테이블명 DROP COLUMN 컬럼명; delete(DML)는 undo segment 에 before image 저장후 commit, rollback에 의해 트랜잭션 종료 삭제가 진행되는 시점에서 다른 사용자가 DML명령어로 접근한다면 락걸림 SET UNUSED 다른 사용자가 접근하지 못하도록 제한만 둔다. 복구 안됨. ALTER TABLE 테이블명 SET UNUSED(컬럼명); 시스템 사용 빈도가 적을 때 실질적인 삭제를 한다. ALTER TABLE 테이블명 DROP UNUSED COLUMNS;

테이블 갱신 시 발생한 락 해결 방법 SQL> CREATE TABLE em3 AS SELECT * FROM emp; 사원테이블과 동일한 테이블 생성 SQL> CREATE TABLE em3 AS SELECT * FROM emp; em3 테이블에서 empname 컬럼 삭제 SQL> ALTER TABLE em3 DROP COLUMN empname; 접속 : >conn scott_y/tiger 삭제중 DML이 발생하면 lock 걸림 사원테이블과 동일한 테이블 생성 SQL> CREATE TABLE em4 AS SELECT * FROM emp; em4 테이블에서 empname 컬럼 사용하지 못하도록 함 SQL> ALTER TABLE em4 SET UNUSED (empname); SQL> SELECT * FROM em4; unused 컬럼 삭제 SQL> ALTER TABLE em4 DROP UNUSED COLUMNS; Empname 컬럼이 나타나지 않음.

DDL의 롤백은 불가 자동 커밋 DDL 문은 자동 커밋이 발생 -> 롤백 불가. 테이블을 복사해두었다가 변경후 잘 못 되었을 경우를 대비, rename 으로 이름 변경후 사용.

DDL의 롤백 SQL> CREATE TABLE em2 AS SELECT * FROM emp; 사원테이블과 동일한 테이블 생성 SQL> CREATE TABLE em2 AS SELECT * FROM emp; SQL> CREATE TABLE copy_em2 사원명 삭제 (DDL로 자동커밋) SQL> ALTER TABLE em2 DROP COLUMN empname; SQL> ROLLBACK; SQL> SELECT * FROM em2; em2 테이블 삭제 SQL> DROP TABLE em2; SQL> RENAME copy_em2 TO em2; DDL은 롤백할 수 없으므로 복사해 둠. DDL은 롤백 불가 Empname 컬럼은 이미 제거됨.

TRUNCATE와 DELETE 차이 TRUNCATE DDL 문 자동 커밋 발생, 삭제 이전으로 롤백 불가. 자동 커밋 발생, 삭제 이전으로 롤백 불가. 테이블 구조만 남고 모든 컬럼 삭제. DELETE DML 문 삭제 이전으로 롤백 가능. 삭제하고자 하는 컬럼과 로우 선택 가능 . (조건에 따른 삭제 가능)

TRUNCATE와 DELETE 차이 –cont’d 사원테이블과 동일한 테이블 생성 SQL> CREATE TABLE em5 AS SELECT * FROM emp; SQL> CREATE TABLE em6 AS SELECT * FROM em5; SQL> SELECT * FROM em6; SQL> TRUNCATE TABLE em6; SQL> ROLLBACK; Truncate 은 DDL이므로 롤백 불가. >>선택된 레코드가 없음

TRUNCATE와 DELETE 차이 –cont’d em5 사원테이블 삭제 SQL> DELETE em5; SQL> SELECT * FROM em5; SQL> ROLLBACK; SQL> DELETE em5 WHERE deptid=11 or deptid=21; SQL> COMMIT; DELETE는 롤백 가능. Commit 후 rollback은 이전상태로 복구불가.