728x90
Disk(=Hard Disk)
Hard Disk는 자성물질을 가진 회전체로 Tracks에 data를 저장한다.
특징
- Slow
- 정보가 담긴 Track을 선택하는 것이 느림
- 그러나 track을 찾으면 정보를 빠르게 읽을 수 있음
- Durable
- 내구성이 좋기 때문에 Disk에 저장된 데이터는 충격이 가해지는 게 아닌 이상 안정하게 보관됨
- Cheap
Random Access Memory(RAM), Main Memory
특징
- Fast
- sequential access속도가 10배 향상됨
- random access속도가 100,000배 향상됨
- Vloatile
- 휘발성 메모리로 power out 되면 데이터가 날아간다
- Expendive
- Disk에 비해 가격이 비쌈
Memory of Transaction
RAM에서 정보를 추가하거나 삭제하고 이를 Disk로 보내 모두가 사용할 수 있게 한다.
- Local(DRAM)
- DBMS는 각 process를 가지고 있고 읽을 수만 있는 값
- Global(DRAM+DISK)
- 각 process 간 공유 데이터로 읽고 쓸 수 있음
- Disk (영구적 기록)
- Global에서 디스크로 일기, Flush가 가능함
- Flush: Main memory에서 Disk로 정보를 쓰는 행위
- Log
- Transactions의 실행과정을 기록한 것
Transaction(TXN)
하나 이상의 연속된 작업을 묶어서 표현한 것이다.
START TRANSACTION
UPDATE Product
SET Price = Price – 1.99
WHERE pname = ‘Gizmo’
COMMIT
START TRANSACTION
UPDATE Bank SET amount = amount – 100
WHERE name = ‘Bob’
UPDATE Bank SET amount = amount + 100
WHERE name = ‘Joe’
COMMIT
START TRANSACTION와 COMMIT을 이용하여 정의하며 여러 개의 명령어를 설정할 수 있다.
Transaction은 완전히 실행하거나 하나도 실행하지 않는 상태(Completely or not at all)를 유지하며 이는 중요한 성질이다.
예시
- Transfer money between accounts(송금)
- Purchase a group of products(구매)
- Register for a class(수강신청)
Motivatoin of Transactions
- Recovery and Durability
- crashes, aborts, system shutdowns에도 data를 일관성 있게 유지하기 위해 필요함
- roll-back을 통해 durably을 보장함
- Concurrency
- 에러를 발생시키지 않고 TXN를 병렬화 하여 동시성을 가짐
- 느린 Disk에서 여러 요청을 처리하기 위해서 필요함
- 여러 개의 TXNs을 다루지만 각 TXNs 간의 Isolation을 보장함
Transactions이 없다면 crash, abort가 발생하였을 때 원자성을 보장할 수 없다. 위의 사진을 보면 Price의 값이 사용자가 원하는 값과 다르게 나올 수 있다.
Client 1: UPDATE Product
SET Price = Price – 1.99
WHERE pname = ‘Gizmo’
Client 2: UPDATE Product
SET Price = Price*0.5
WHERE pname=‘Gizmo’
Transactions이 없다면 두 명령어가 한 번에 실행되어 price의 값이 사용자가 원하는 값과 달라질 수 있다.
Client 1: START TRANSACTION
UPDATE Product
SET Price = Price – 1.99
WHERE pname = ‘Gizmo’
COMMIT
Client 2: START TRANSACTION
UPDATE Product
SET Price = Price*0.5
WHERE pname=‘Gizmo’
COMMIT
Transactions을 통해 충동을 없앤다.
Properties of Transactions
Transaction의 성질로는 ACID가 있고 각 뜻은 아래와 같다. ACID는 DB가 가져야 할 성질과도 같다.(NOSQL과 같은 몇몇 DB는 따르지 않기도 하지만 기본적으로 ACID를 따름)
- Atomicity
- 데이터가 0 또는 1로 실행되어야 함 (all or noting)
- txn이 부분적으로 실행되거나 중간에 중단되고 일관성을 유지하게 함
- Consistency
- 데이터베이스의 제약조건을 준수하고 게이터의 일관성을 유지하는 것
- 데이터베이스에는 여러개의 테이블과 관계가 존재하고, 이러한 관계를 유지하고 무결성을 보장하기 위해 필요함
- Programmer: txn를 consistent state로 유지해야 함
- System: txn가 atomic을 유지해야 함
- Isolation
- txn이 실행되고 있을 때 다른 txn에 의해 영향받지 않음
- txn이 고립성을 갖고 동시에 다른 txn에 의해 현재 txn의 결과가 영향받지 않음을 보장함
- Durabiliry
- txn commit시 Disk가 유지되어야 함
- txn이 성공적으로 실행되면 데이터의 변경 내용이 영구적으로 유지됨
- 이를 통해 디스크 장애가 발생해도 데이터베이스는 복구되어 일관된 상태를 유지함
728x90
'데이터베이스' 카테고리의 다른 글
[DBMS] Transactions에서 ACID를 유지하는 방법 logging, Locking (0) | 2023.05.30 |
---|---|
[SQL] Multiset Operations, 중첩 질의문, 집합 연산, NULL JOIN (0) | 2023.04.18 |
[SQL] SQL 기초 (Join, like, Order by, Foreign Key) (0) | 2023.04.17 |
[SQL]DBMS란 무엇인가? (0) | 2023.04.17 |