반응형
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)
반응형
'Legacy(~18.10) > 컴퓨터공학' 카테고리의 다른 글
[DB이론] 관계형 모델 (0) | 2018.09.14 |
---|---|
[DB이론] Index (0) | 2018.09.12 |
[Data Structure] Tree - Linked List로 표현하기 (0) | 2018.09.12 |
[Data Structure] Tree - 기본 정의 및 용어 && Python 리스트로 트리 표현하기 (0) | 2018.09.12 |
[Data Structure] Hashing - 이론 (0) | 2018.09.10 |