본문 바로가기
기타

트랜색션 SQL (ACID 원칙)

by 개복취 2023. 8. 29.

Transaction in SQL

트랜잭션하면 빼놓을수 없는 toxic한 ACID

  • Transaction
    • 개념
    • 문법

주요 메모 사항 📔

Transaction

 개념

  • 트랜잭션이라 함은 하나의 작은 논리적인 작업단위를 나타낸 것이다.
  • 데이터베이스의 데이터를 변경하거나 검색하는 과정에서 데이터의 일관성과 무결성을 유지하기 위해 필요한 기능
  • 데이터를 주고받는 SQL에서도 당연하게 Transaction의 단위를 나타낼 수 있다.

문법

BEGIN;

   SELECT ~ FROM TABLE_NAME;

   DELETE FROM TABLE_NAME WHERE ~;

COMMIT;
  • BEGIN 과 COMMIT 까지 한 트랜잭션 블록단위로 묶인다.
  • 종료할 때 COMMIT 이외에도 END를 사용할 수 있다.
  • END는 트랜잭션을 종료하고 모든 작업을 롤백하는 데 사용되며, COMMIT은 트랜잭션을 종료하고 작업을 영구적으로 데이터베이스에 저장하는 데 사용됩니다. 대부분의 경우 COMMIT을 사용하여 트랜잭션을 종료하고 작업을 확정시키는 것이 일반적이다.
BEGIN;
UPDATE accounts SET balance = balance - 100.00
    WHERE name = 'Alice';
SAVEPOINT my_savepoint;
UPDATE accounts SET balance = balance + 100.00
    WHERE name = 'Bob';
-- 에구 ... Wally한테 가야하는 거였는데...
ROLLBACK TO my_savepoint;
UPDATE accounts SET balance = balance + 100.00
    WHERE name = 'Wally';
COMMIT;
  • SAVEPOINT, ROLLBACK TO 를 통해 만약 트랜색션이 도중에 실패했을 때에 대해 안전장치를 마련해둘 수 있다.
  • ROLLBACK TO 로 SAVEPOINT로 설정해둔 위치로 이동할 수 있지만 그러나, 한번 특정한 SAVEPOINT로 간 이후 저장해두었던 다른 SAVEPOINT들은 모두 취소되어 사라져 버린다.
  • 위의 예제에서는, ROLLBACK TO를 사용해서 Bob에 보내야하는걸 다시 롤백시킨다음 올바른 입금 계좌로 업데이트 한다.

https://www.postgresql.org/docs/current/sql-begin.html

 

BEGIN

BEGIN BEGIN — start a transaction block Synopsis BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] where …

www.postgresql.org

https://postgresql.kr/docs/9.5/tutorial-transactions.html

 

트랜잭션

트랜잭션 transaction 이란 모든 데이터베이스 시스템에서 기본적인 한 개념입니다. 트랜잭션의 핵심은 여러개의 작업이 최종적으로는 하나로 취급된다는 것입니다. 이것을 전부 적용 아니면 전부

postgresql.kr


추후 알아볼 사항 🔎 

트랜색션의 원리 - CDC, WAL

https://m-falcon.tistory.com/527

 

[PostgreSQL] Transaction 왜, 언제, 어떻게 동작하나?

🎯 Goals 트랜잭션의 사용 방법을 알아본다. 트랜잭션이 동작 원리를 그림으로 정리한다. 동작원리 이해를 위해 WAL, CDC가 무엇인지 알아본다. 1. 트랜잭션 사용 방법 BEGIN 트랜잭션 블록 초기화 키

m-falcon.tistory.com