트랜잭션 ACID
트랜잭션은 일련의 작업들이 안전하게 처리되도록 보장해준다
| 원자성 | 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다. 커밋(Commit) : 모든 작업이 성공해서 데이터베이스에 정상 반영되는 것 롤백(Rollback) : 작업 중 하나라도 실패해서 transaction이전으로 되돌리는 것 |
| 일관성 | 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 충족시켜야 한다. |
| 격리성 | 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데이터를 수정하지 못하도록 해야 한다. 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다. |
| 지속성 | 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구가능해야 한다. |
데이터베이스 연결 구조( DB세션 )

* 데이터베이스 서버에 연결을 요청하고 커넥션을 맺으면, 데이터베이스 서버는 내부에 세션이라는 것을 만든다.
앞으로 해당 커넥션을 통한 모든 요청( SQL실행, 트랜잭션 시작,종료 ... )은 이 세션을 통해서 실행하게 된다.
* 사용자가 커넥션을 닫거나, DBA(DB 관리자)가 세션을 강제로 종료하면 세션은 종료된다.
* 커넥션 풀이 10개의 커넥션을 생성하면, 세션도 10개 만들어진다.
'김영한님 인강듣고 > 스프링 DB' 카테고리의 다른 글
| 트랜잭션 이해 (0) | 2024.10.26 |
|---|---|
| 스프링 트랜잭션 시작 (1) | 2024.10.26 |
| JDBC이해 (0) | 2024.10.17 |
| DataSource의 이해 (0) | 2024.07.30 |
| 커넥션 풀의 이해 (0) | 2024.07.30 |