Legacy(~18.10)/컴퓨터공학
[DB이론] Transaction
Depaysement
2018. 9. 12. 21:31
반응형
Transcation
?: 데이터베이스 내에서 한꺼번에 수행되어야할 일련의 연산
: 전부 실행되거나, 혹은 전부 실행이 안되거나
여러개의 프로세스를 마치 하나처럼 동작하는 방식==단일화된 작업 -> 성공 or 실패 만 존재 한다.
Transaction
의 모든 연산은 반드시 한꺼번에 완료가 되어야 하며, 그렇지 않은 경우에는 한꺼번에 취소되어야 하는원자성
을 가지고 있다.정상적으로 완료가 되어서, 성공적으로 종료 ->
COMMIT
작업결과가 데이터베이스에 반영
취소 혹은 비정상 적인 종료 ->
ROLLBACK
작업결과가 모두 취소되고 데이터베이스에 영향 없음
Django 에서 Transaction 처리 (출처)
settings.py 에서 ATOMIC_REQUESTS = True 설정을 해준다.
데코레이터를 이용한 Transaction
from django.db import transaction
atomic .
def transaction_test1(arg1, arg2):
# start transaction
a.save()
b.save()
# end transaction
with 명령어를 이용한 트랜잭션 예시
from django.db import transaction
def transaction_test2(arg1, arg2):
a.save() # 항상 save 처리됨, 예외가 발생할 경우 에러 발생
with transaction.atomic():
# start transaction
b.save()
c.save()
# end transaction
savepoint를 직접 지정해 주는 트랜잭션
from django.db import transaction
def transaction_test3(arg1, arg2):
a.save()
sid = transaction.savepoint()
# start transaction
try:
b.save()
c.save()
transaction.savepoint_commit(sid)
# end transaction
except Exception
# 트랜잭션 내에서 에러 발생시 롤백처리
transaction.savepoint_rollback(sid)
반응형