반응형

트랜잭션(Transaction)의 개념

하나의 논리적 기능을 수행하기 위한 작업의 단위

한 번에 수행되어야 할 DB의 일련의 Read와 Write 연산을 수행하는 단위

 

ACID 특징

  1. Atomicity (원자성)
    • 한 개 이상의 동작이 논리적으로 한 개의 작업 단위
    • 연산 전체가 성공적으로 처리되거나 실패할 경우 전체가 취소되도록 보장
    • 관리주체 : 트랜잭션 관리자
  2. Consistency (일관성)
    • 트랜잭션이 실행 성공 후 항상 모순 없이 일관성 있는 DB 상태 보존
    • 관리주체 : 무결성 제어기
  3. Isolation (고립성)
    • 트랜잭션 실행 중 생성하는 연산의 중간결과를 다른 트랜잭션 접근 불가
    • 관리주체 : 병행 제어 관리자
  4. Durabillity (영속성)
    • 성공이 완료된 트랜잭션의 결과는 영구적으로 데이터베이스에 저장됨
    • 마음대로 데이터가 삭제되거나 변경되면 안 된다.
    • 관리주체 : 연관 회복 관리자

 

트랜잭션 상태도

 

Partially Committed (부분적 완료)

트랜잭션이 시작하고 어떤 질의어들이 성공을 하게 되면 Partially Committed 상태가 되는데 Partially Committed는 오류가 없이 Commit 직전까지 모든 질의어가 수행되는 상태를 말한다.

 

상태 설명 전이
Active 초기 상태, 트랜잭션 실행 시작 또는 실행 중인 상태 Partially Committed,
Failed
Partially Committed 마지막 명령문이 실행된 후 Commit 직전 상태
Commit 명령이 도착한 상태
Failed, Commit
Failed 정상적인 실행이 진행될 수 없는 상태 Aborted
Aborted 트랜잭션 실행이 실패하여 취소되고 트랜잭션 시작 전 상태로 환원된 상태 (Rollback) 종료
Committed 성공이 완료된 트랜잭션의 결과는 영구적으로 데이터베이스에 저장 종료

 

동시성 제어

  • 멀티 프로세스 환경을 지워 나는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
  • DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호 간섭에서 Database를 보호하는 것을 의미

트랜잭션 여러 개가 동시에 접근했을 때 직렬화 수행을 통해 데이터를 한 번씩 접근하도록 보장하는 기능
직렬화 수행을 하지 않았을 경우, Dirty Read나 Phantom Read 등 문제 있는 데이터가 나타날 수 있다.
동시성 제어와 성능은 반비례하다.

 

동시성 제어를 하지 않았을 때 문제점

구분 설명
갱신 손실 (Lost Update) 트랜잭션들이 동일 데이터를 동시에 갱신 할 경우 발생
이전 트랜잭션이 데이터를 갱신한 후 트랜잭션을 종료하기 전에 나중 트랜잭션이 갱신 값을 덮어쓰는 경우 발생
현황파악오류 (Dirty Read) 트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류
모순성 (Inconsistency) 두 트랜잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제
연쇄복귀 (Cascading Rollback) 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능
반복할 수 없는 읽기 (Unrepeatable Read) 한 트랜잭션 내에서 같은 질의를 2번 수행했을 때 그 사이 다른 트랜잭션의 간섭으로 결과가 다르게 나오는 오류

 

동시성 제어의 목적

  • 트랜잭션의 직렬 성 보장 및 동시 수행 트랜잭션 처리량 최대화
  • 데이터의 무결성 및 일관성 보장
  • 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장

동시성 제어 기법들

  • 2-Phase Locking 기법
    • 특정 트랜잭션이 하나씩 수행될 때 프로그램의 쿼리에 잡힌 테이블들을 트랜잭션이 실행되기 전 Lock을 잡고 다시 하나씩 Unlock으로 푸는 기법
  • TimeStamp Ordering 기법
    • 트랜잭션마다 시간을 부여해서 먼저 도착한 트랜잭션 순으로 실행시키는 기법
  • 낙관전 검증(Validation) 기법
    • Read, Validation, Write 3단계 구간에 교차되는 구간이 있는지 검사하면서 실행하는 기법
  • 다중 버전 병행 제어 기법 - MVCC(Multi-Version Concurrency Control)
    • Update 또는 Delete 문이 실행될 때 Update 전의 데이터를 Undo 영역에 백업을 하고 최신의 SCN(System Commit Number) 값을 Undo 영역에서 조회를 해서 아직 갱신되지 않은 직전의 데이터를 가지고 오는 기법
    • Lock을 잡는 순간이 더 짧다

 

Isolation Level

  • 트랜잭션 실행 중 중간 연산 결과가 다른 트랜잭션으로 접근 불가하도록 하는 고립성을 유지하기 위한 데이터의 허용 수준
  • SQL-92 표준에서 4단계로 표준화, 대부분의 DBMS 벤더들이 준수하고 있다.
레벨 상태 설명 전이
0 Read Uncommitted 트랜잭션에서 처리중인 아직 Commit 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용 Dirty Read
Nonrepeatable Read
Phantom Read
1 Read Committed 트랜잭션이 Commit 되어 확정된 데이터만 읽는 것을 허용 (해당 데이터만 shared lock) Nonrepeatable Read
Phantom Read
2 Repeatable Read 선행 트랜잭션이 읽은 데이터는 트랜잭션이 종료될 때까지 후행 트랜잭션이 갱신, 삭제 불가 Phantom Read
3 Serializable 선행 트랜잭션이 읽은 데이터를 후행 트랜잭션이 갱신하거나 삭제하지 못할 뿐 아니라 중간에 새로운 레코드를 삽입도 금지 모두 발생 불가
Select 테이블 전체 Lock

 

문제점

Dirty Read

  • 트랜잭션 A가 수정 중인 데이터를 트랜잭션 B가 조회를 하고, 문제가 발생해 Rollback을 했을 경우 트랜잭션 B는 수정된 데이터로 로직을 실행한다.

Non-repeatable Read

  • 트랜잭션 B가 데이터를 두 번 조회할 때, 그 사이에 트랜잭션 A가 값을 수정 또는 삭제했을 경우 데이터가 다르게 나타나는 문제가 발생한다.
  • 은행 관련 서비스에 문제가 발생할 수 있다.

Phantom Read

  • 트랜잭션 B가 데이터를 두번 조회할 때, 첫번째 데이터에는 없었던 유령(Phantom) 데이터가 발생하는 현상이다.
  • 테이블에 전체 lock을 걸지 않았기 때문에 발생한다.

 

Isolation level 설정값 확인 명령어

show variable like 'tx_isolation';

Isolation level 설정 변경 명령어

set tx_isolation='READ-COMMITED';

 

반응형

'DB > DBMS' 카테고리의 다른 글

[DBMS] DBMS 질의어  (0) 2022.10.31
[DBMS] DBMS의 정의  (0) 2022.10.28
[DBMS] 데이터 독립성  (0) 2022.10.27
[DBMS] DataBase란?  (0) 2020.11.29
반응형

DDL(Data Definition Language)의 정의

데이터베이스의 객체를 생성하고, 삭제, 변경할 수 있는 SQL 명령어

DDL(Data Definition Language)의 특징

  • 데이터베이스 스키마를 컴퓨터가 이해할 수 있도록 기술하는 데 사용한다.
  • 데이터베이스 관리자나 데이터베이스 설계자가 사용한다.
    • 일반 응용 어플리케이션 개발자들은 권한이 부족해서 생성하지 못하는 경우가 많다.
  • 데이터베이스의 메타 데이터로 Data Dictionary에 저장한다.

DDL의 종류

명령어 기능
CREATE 새로운 데이터베이스 객체 생성
ALTER 존재하는 데이터베이스 객체 변경
DROP 존재하는 데이터베이스 객체 제거
TRUNCATE 테이블에서 데이터를 삭제
RENAME 테이블의 이름을 변경

 

데이터베이스 객체의 종류 : 테이블, 테이블 스페이스, 뷰, 인덱스, 프로시저, 함수 등

 

ALTER 명령어의 예시

기능 명령어
컬럼 추가 ALTER TABLE user ADD (deptno NUMBER(5));
컬럼명 변경 ALTER TABLE user RENAME COLUMN date TO data;
컬럼속성 변경 ALTER TABLE user MODIFY (deptno NUMBER(10));
컬럼 삭제 ALTER TABLE user DROP COLUMN deptno;
컬럼 사용 안함 처리 ALTER TABLE user SET UNUSET COLUMN deptno;
사용 안하는 컬럼 DROP ALTER TABLE user DROP UNUSET COLUMNS;

DDL 명령어의 예시

기능 명령어
테이블 삭제 DROP TABLE user;
객체 이름 변경 RENAME user TO user_new;
테이블에서 모든 데이터 제거 TRUNCATE TABLE user_new;

TRUNCATE의 특징

  • TRUNCATE는 DDL이기 때문에 Rollback이나 Commit 이 존재하지 않는다.
  • DELETE를 했을 경우 데이터를 UNDO 영역에 다시 적재하면서 데이터를 하나씩 삭제하기 때문에 시간이 오래 걸린다.
  • TRUNCATE는 영구 삭제기 때문에 속도가 매우 빠르다.

 

DML(Data Manipulation Language)의 정의

내부 스키마에 데이터를 입력, 수정, 삭제, 조회하기 위한 언어 또는 명령어

 

DML(Data Manipulation Language)의 특징

  • 데이터 조작을 위한 필수 언어
  • 질의 방법에 따라 성능 차이가 발생한다.
  • 사용자가 직접 필요로 하는 답을 만드는 것이 아니라 데이터베이스의 처리 엔진(옵티마이저)이 답을 찾아 해결

DML의 종류

명령어 기능 예시
INSERT 테이블의 전체 컬럼 또는 일부 컬럼에 값을 입력할 때 사용 INSERT INTO user (id, name) VALUES ('P01', '홍길동');
INSERT INTO user SELECT id, name from user_bak;
UPDATE 테이블에 저장된 값을 변경할 때 사용 UPDATE user SET name='홍시' where id='P01';
DELETE 테이블에 저장된 데이터(레코드)를 삭제할 때 사용 DELETE FROM user;
DELETE FROM user where id='P01';
SELECT 테이블에 저장된 값을 조회할 때 사용 SELECT * FROM user where name like '홍%';

 

DCL(Data Control Language)의 정의

데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어

DCL(Data Control Language)의 특징

  • 데이터의 무결성 및 정확성을 확보하기 위한 기능
  • 불법적인 사용자로부터 데이터를 보호하기 위한 기능
  • 시스템 장애로부터 회복하거나 동시 접근을 위한 기능

DCL(Data Control Language)의 종류

명령어 기능 예시
COMMIT 입력한 자료나 수정한 자료에 대해서 또는 삭제한 자료에 대해서 트랜잭션을 종료하고 디스크에 최종 저장 UPDATE user SET name='홍시' where id='P01';
COMMIT;
ROLLBACK 트랜잭션을 취소하고 데이터의 변경 이전 상태로 복구 DELETE FROM user;
ROLLBACK;
GRANT 사용자에게 객체에 대한 특정 권한을 부여하는 명령어 GRANT select, insert, delete, update ON user TO userA;
REVOKE 사용자에게서 주어진 권한을 회수하는 명령어 REVOKE select, insert, delete, update ON user FROM userA;

 

반응형

'DB > DBMS' 카테고리의 다른 글

[DBMS] 트랜잭션(Transaction)의 정의  (0) 2022.11.01
[DBMS] DBMS의 정의  (0) 2022.10.28
[DBMS] 데이터 독립성  (0) 2022.10.27
[DBMS] DataBase란?  (0) 2020.11.29
반응형

DB와 DBMS의 차이점

  • Database : Data의 저장소, 데이터를 통합 저장하고 운영하는 집합체
  • DBMS : Database를 생성하고, 효율적으로 관리하기 위한 관리 시스템
    • eg) Oracle, MariaDB, MySQL, PostgreSQL, MongoDB 등

DBMS (Database Management System)

  • 데이터베이스를 관리하기 위한 매니지먼트 시스템
  • 일반 파일 시스템 문제점인 데이터들의 종속성과 중복성을 해결하기 위해 고안되었다.
  • 응용 애플리케이션과 데이터 사이의 중재자 역할을 하는 소프트웨어 (Software System)

DBMS 주요 기능

  • 사용자 간의 권한 통제 (데이터 접근 통제)
    • 권한별로 데이터를 보호할 수 있다.
  • 데이터의 일관성과 무결성을 보장
  • 데이터를 표준화하고, 통합 관리 기능
  • 트랜잭션 관리를 통해서 장애가 생겼을 때 Rollback, Commit을 통해 데이터의 일관성을 보장한다.
  • 동시성 제어를 통해서 데이터의 성능 향상 및 일관성 확보
  • 시스템 장애로부터 회복/복구

DBMS 구성요소

 

 

구분 설명
질의어 처리기 터미널 접속한 사용자의 질의문을 분석하고 파싱하고 컴파일 한다.
데이터베이스 접근 코드를 생성한 뒤, 런타임 DB에 보낸다.
DDL 컴파일러 DDL로 명세된 스키마를 메타데이터로 처리하여 카탈로그에 저장한다.
모든 DBMS 모듈은 카탈로그 정보에 접근해서 이용한다.
DML 예비 컴파일러 응용 프로그램의 DML을 추출한다.
목적 코드로 컴파일 되도록 DML 컴파일로 보낸다.
DML 컴파일러 DML 명령어를 파싱하고, 컴파일하여 목적코드로 생성
런타임 DB 처리기 실행 시간에 데이터베이스 접근을 관리한다.
검색이나 갱신 연산을 데이터베이스에서 실행시킨다.
트랜잭션 관리자 무결성 제약조건 만족여부나 사용자 권한 검사 등을 체크한다.
트랜잭션 병행제어나 장애 시 회복작업 등을 수행한다.
저장 데이터 관리자 디스크에 저장되는 사용자 데이터베이스 카탈로그 접근을 책임진다.

 

반응형

'DB > DBMS' 카테고리의 다른 글

[DBMS] 트랜잭션(Transaction)의 정의  (0) 2022.11.01
[DBMS] DBMS 질의어  (0) 2022.10.31
[DBMS] 데이터 독립성  (0) 2022.10.27
[DBMS] DataBase란?  (0) 2020.11.29
반응형

데이터 독립성의 정의

하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계 애플리케이션 또는 외부 사용자에게 영향을 미치지 않도록 구성하는 데이터베이스 특징

 

데이터 독립성의 필요성

유지보수 비용 증가

데이터 복잡도 증가

데이터 중복성 증가

요구사항 대응 저하

=> 데이터 독립성을 만들어서 이러한 요구사항을 쉽게 대응하기 위해서 필요하다.

 

데이터 독립성의 개념

  • 개념 스키마의 논리 ERD가 변경되지 않아도 물리적인 실제 오라클, mysql 등이 개념 스키마 자체는 변경될 필요가 없다.
  • 이것을 물리적 데이터 독립성이라고 한다.
  • 이를 통해 좀 더 유연한 시스템을 만들 수 있다.
  • 예를 들어 개념 스키마 하나만 만들어도 문제가 생겨서 오라클에서 mysql로 변경을 할 때 쉽게 변경이 가능하다.
  • 논리적인 개념 스키마의 변경이 없어도 외부의 물리데이터는 변경이 쉽다.
  • 스키마가 컬럼추가 시 응용 애플리케이션은 손댈 필요가 없다.
  • 즉, 논리적 데이터 독립성은 외부 뷰와 개념 스키마 간의 독립을 시키라는 뜻
  • 개념 스키마와 내부 스키마 간의 매핑 관계를 매우 독립적으로 구현하는 개념

 

데이터 독립성의 종류

논리적 독립성

  • 데이터베이스의 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 것 (응용 프로그램과 자료구조를 독립시키는 것)
  • 데이터베이스 관리시스템이 하나의 논리적데이터 구조를 가지고 많은 응용 프로그램이 제 각각 요구하는 다양한 형태의 논리적 구조로 mapping 시켜 줄 수 있어야 한다.
  • 사용자 특성에 맞는 변경 가능
  • 통합구조 변경 가능
  • 논리적 구조 사상

물리적 독립성

  • 응용 프로그램과 논리적 구조에 영향을 주지 않고, 데이터의 물리적 구조를 변경시킬 수 있는 것
  • 하나의 논리적 구조로부터 여러 가지 상이한 물리적 구조를 지원할 수 있는 mapping 능력이 있어야 한다는 것
  • 물리적 구조변경 없이 개념 구조 변경 가능
  • 개념구조 영향없이 물리적인 구조 변경 가능
  • 물리적 구조 사상
반응형

'DB > DBMS' 카테고리의 다른 글

[DBMS] 트랜잭션(Transaction)의 정의  (0) 2022.11.01
[DBMS] DBMS 질의어  (0) 2022.10.31
[DBMS] DBMS의 정의  (0) 2022.10.28
[DBMS] DataBase란?  (0) 2020.11.29
반응형

1. 다운로드를 받는다.

https://www.oracle.com/index.html

2. 컴퓨터 관리 상태 바꾸기

시작됨 / 자동으로 바뀌었는지 확인하고 바꾸어준다.

3. 방화벽 인바운드 규칙을 만들어준다.

방화벽 > 고급설정 클릭

인바운드 규칙 > 새 규칙

포트번호 설정

연결허용 선택

규칙 이름 설정


4. 오라클 설치 후 작업

DOS> sqlplus /nolog (sqlplus 명령 실행)
sql> conn 관리자/비밀번호 as sysdba (접속)
Connected.

sql> show user (현재 접속 사용자명 검색)
USER is "SYS"

sql> @C:\ sql파일경로 (파일에 저장된 SQL 명령 실행)
☞ 사용자 생성

sql> show user
USER is "SCOTT"

sql> select table_name from tabs; (현재 접속 사용자의 테이블 목록 확인)

sql 명령 실행 및 사용자 생성

오라클 첫 실행 - 경로설정

오라클 실행

오라클 접속

반응형

'DB > Oracle' 카테고리의 다른 글

[Oracle] JOIN과 서브쿼리  (0) 2020.12.03
[Oracle] Oracle 함수  (0) 2020.12.02
[Oracle] Oracle 기본 문법  (0) 2020.12.01

+ Recent posts