BackEnd King KY

TIL8 - Transaction(1/2) 본문

Database

TIL8 - Transaction(1/2)

Django King, Lee 2022. 2. 23. 21:41
728x90

 

✔️ Transaction

데이터를 다루는 데 있어 꼭 알아야 할 트랜잭션입니다.

트랜잭션이란 일련의 작업들을 하나의 단위로 실행하는 것을 뜻합니다.

일련의 작업들이 마치 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 실패하게 됩니다.

 

오늘은 Commit과 Rollback에 대해 알아본 뒤, 내일 트랜잭션의 가장 큰 4가지 특징인 ACID에 대해 포스팅 하겠습니다.

 

✔️ Commit & Rollback

트랜잭션 상의 모든 작업이 문제없이 성공하면 Commit이 됩니다.

즉, 데이터베이스에 실제로 반영이 된다는 뜻입니다.

 

우리가 GitHub에 Commit을 하는 건 작업이 완료되었고 Repository에 반영하겠다는 의미입니다.

데이터베이스에 대입해보면, GitHub라는 DB에 작업을 반영하겠다는 의미가 되는 것입니다.

 

만일, 트랜잭션 진행 중 문제가 생긴다면 Rollback을 합니다.

즉, 트랜잭션 과정 중 진행된 작업은 데이터베이스에 반영되지 않고, 트랜잭션 하기 전의 상태로 돌아간다는 뜻입니다.

 

정말 간단한 트랜잭션의 예시를 들어보겠습니다.

 

users라는 테이블에 email이라는 컬럼을 만들고 유저정보를 관리할 예정입니다.

현재 10개의 데이터가 있고, 데이터 추가하는 걸 트랜잭션을 통해 해보겠습니다.

 

우선, 트랜잭션의 시작은 항상 begin으로 해야 합니다.

MSSQL을 썼던 이전 회사에서는, begin tran이라고 썼는데 DB마다 조금씩 다른 것 같습니다.

 

트랜잭션 시작 후, users에 데이터 하나를 insesrt하면 추가되었다는 의미를 가진 insert 0 1 이라는 문구가 뜹니다.

그리고 되돌리기 위해 rollback을 한 후 조회를 하면, 트랜잭션을 취소했기 때문에 데이터의 변화가 없습니다.

 

 

 

더 추가적으로 수정/삭제를 해봤습니다.

수정의 경우, 수정된 개수가 리턴되고 삭제는 삭제된 개수가 리턴되는 걸 확인하실 수 있습니다.

그러면 이제 커밋을 시켜보겠습니다.

 

트랜잭션을 시작하고, 데이터 하나를 추가한 뒤 커밋을 했습니다. 그 후 데이터를 조회하면 유저 테이블의 개수가 10개에서 11개가 된 것을 확인할 수 있습니다.

 

To Be Continued..

'Database' 카테고리의 다른 글

TIL43 - alembic에서 metadata를 왜 설정해야 할까  (0) 2023.02.04
TIL14 - DB Indexing  (0) 2022.03.05
TIL8 - Transaction(2/2)  (0) 2022.02.24