💡 Transaction을 간단히 설명해 주세요
트랜잭션이란 데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 하나 이상의 쿼리를 모아 놓은 하나의 작업 단위를 말한다.
각 트랜잭션은 하나의 특정 작업으로 시작을 해서 묶여 있는 모든 작업들을 다 완료해야 정상적으로 종료된다.
만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다. = 작업이 하나라도 실패를 하게 되면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공이다.
데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다.
Atomicity(원자성), Consistency(일관성), Isolation(격리성, 고립성), Durability(지속성)
SQL에서의 트랜잭션은 DML인 SELECT, INSERT, UPDATE, DELETE를 작업 단위로 가지며 COMMIT 혹은 ROLLBACK명령어가 전달되어 트랜잭션이 종료될 때까지 처리한다
+++ 보다 간단한 답변
트랜잭션은 데이터베이스에서 데이터를 처리하는 하나의 논리적인 작업 단위입니다
여러 개의 쿼리 명령문으로 이루어져 있을 수 있고, 쿼리들은 모두 함께 성공하거나 실패하는 결과를 가집니다.
💡 ACID에 대해 설명해보세요
데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다.
ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질이다
A : Atomicity 원자성
원자성이란 시스템에서 한 트랜잭션의 연산들이 모두 성공하거나, 반대로 전부 실패되는 성질이다. 작업이 모두 반영되거나 모두 반영되지 않음으로서 결과를 예측할 수 있도록 한다.
특정 쿼리를 실행했는데 부분적으로 실패하는 부분이 있다면, 전부 실패하도록 구현되어 있다. 때때로 충돌 요인에 대해서 선택지를 제공한다
C : Consistency 일관성
일관성은 하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야한다는 것을 말한다. 트랜잭션이 일어난 이후의 DB는 DB의 제약이나 규칙을 만족해야 한다.
ex. “모든 고객은 반드시 이름을 가지고 있어야 한다”는 DB의 제약, 다음과 같은 트랜잭션은 Consistency(일관성)를 위반한다.
- 이름 없는 새로운 고객을 추가하는 쿼리
- 기존 고객의 이름을 삭제하는 쿼리
데이터베이스의 유효한 상태는 다를수 있지만, 데이터의 상태에 대한 일관성은 변하지 않아야 한다.
I : Isolation 고립성
모든 트랜잭션은 다른 트랜잭션으로부터 독립적으로 시행된다
동시에 여러 개의 트랜잭션들이 수행될 때, 각 트랜젝션은 고립(격리)되어 있어 연속으로 실행된 것과 동일한 결과를 나타낸다
D : Durability 지속성
지속성은 하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그가 남아야하는 성질을 말한다.
만약 런타임 오류나 시스템 오류가 발생하더라도, 해당 기록(log)은 영구적이어야 한다는 뜻이다.
→ 이러한 특성 때문에 트랜잭션은 주식거래, 금융업에서 중점적으로 사용된다
참고 : https://hanamon.kr/데이터베이스-트랜잭션의-acid-성질/
💡 COMMIT과 ROLLBACK에 대해 설명해보세요.
COMMIT 과 ROLLBACK은 트랜잭션 제어어이다.
데이터베이스는 COMMIT과 ROLLBACK 명령어를 통해 데이터 무결성을 보장한다.
COMMIT은 transaction 작업을 완료했다고 확정하는 명령어이며,
ROLLBACK은 transaction 처리 과정에서 작업이 적절하지 않거나 오류가 발생했을 때, 그동안 발생한 변경 사항을 취소하고 이전 COMMIT의 상태로 되돌려 작업을 취소하는 명령어이다
** 데이터 무결성(data integrity)은 데이터의 정확성과 일관성을 유지하는 것을 말한다
💡 데이터를 다루는 언어 종류 :
DML : 데이터 조작어 Data Manipulation Language
- 사용자가 데이터를 검색/조회/생성/변경/삭제하고자할때 사용
- SELECT(RETRIEVE), INSERT, UPDATE, DELETE
DDL : 데이터 정의어 Data Definition Language
- 테이블과 같이 데이터 구조를 정의하는데에 사용 (생성 변경 삭제 이름변경)
- CREATE, ALTER, DROP, RENAME
DCL : 데이터 제어어 Data Control Language
- 객체 사용 권한을 사용자에세 부여 / 회수하는 언어
- GRANT, REVORT
TCL : 트랜잭션 제어어 Transaction Control Language
- 논리적인 작업의 단위를 묶어 DML에 의해 조작된 결과를 트랜잭션 별로 제어하는 방법
- COMMIT, ROLLBACK, SAVEPOINT </aside>
'CS > DB & SQL' 카테고리의 다른 글
[기술면접] DB | Nested Loop, Sort-Merge, Hash Join (0) | 2023.09.07 |
---|---|
[기술면접] DB 문답 | index 상세 (0) | 2023.09.05 |
[기술면접] DB 문답 | Transaction의 Lock, Index (0) | 2023.09.04 |
[기술면접] DB문답 | SQL JOIN, RDB vs NoSQL (0) | 2023.08.29 |
[기술면접] DB | 모델링 N:M관계 (0) | 2023.08.28 |