일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코루틴
- apitestcase
- DjangoCache
- database
- Transaction
- testcase
- aggregate
- F객체
- dry-yasg
- Continuous Delivery
- 도커
- EC2
- DjangoRestFramework
- Coroutine
- QuerySet
- aws
- CD
- Continuous Deployment
- CI
- Git
- Python
- nestedfunction
- racecondition
- 백준
- to_attr
- annotate
- Prefetch_related
- django
- DRF
- docker
- Today
- Total
목록Transaction (3)
BackEnd King KY

✔️경쟁조건 Race Condition을 번역하면 경쟁조건이라는 말이 됩니다. 경쟁조건이란 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과 값에 영향을 줄 수 있는 상태를 말합니다. 조회수를 예로 들어보겠습니다. 현재 조회수는 1입니다. 만약 A라는 스레드와 B라는 스레드가 동시에 클릭을 한다면? 이론 상 조회수는 3이 되어야 하지만 그렇지 않습니다. A, B 모두 기존의 조회수는 1이었으므로 조회수가 2가 됩니다. 이렇게 타이밍이나 순서에 결과 값에 영향을 주는 이런 상황을 경쟁 조건이 발생했다고 하는 것 입니다. 그래서 이 상황을 피하기 위해 사용하는 것이 트랜잭션입니다. 트랜잭션을 설정하면 ACID의 I에 해당하는 고립성의 특징때문에 A, B 스레드가 동시에 작동할 수 없게됩니다. 둘 중 하..

✔️ ACID RDBMS는 트랜잭션의 기능을 보장할 수 있도록 ACID라고 하는 4가지 성질을 제공합니다. A : 원자성(Atomicity) 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력입니다. 아마 트랜잭션에서 가장 많이 드는 예시 중 하나인 계좌이체로 예시를 들겠습니다. 계좌이체는 성공할 수도, 실패할 수도 있지만 보내는 쪽에서 돈을 빼오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안됩니다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것입니다. 즉, 트랜잭션의 작업들이 데이터베이스에 모두 반영되던가 아니면 아예 반영이 안된다는 뜻입니다. C : 일관성(Consistency) 트랜잭션이 성공적으로 완료되면 언제나 일관성있는 ..

✔️ Transaction 데이터를 다루는 데 있어 꼭 알아야 할 트랜잭션입니다. 트랜잭션이란 일련의 작업들을 하나의 단위로 실행하는 것을 뜻합니다. 일련의 작업들이 마치 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 실패하게 됩니다. 오늘은 Commit과 Rollback에 대해 알아본 뒤, 내일 트랜잭션의 가장 큰 4가지 특징인 ACID에 대해 포스팅 하겠습니다. ✔️ Commit & Rollback 트랜잭션 상의 모든 작업이 문제없이 성공하면 Commit이 됩니다. 즉, 데이터베이스에 실제로 반영이 된다는 뜻입니다. 우리가 GitHub에 Commit을 하는 건 작업이 완료되었고 Repository에 반영하겠다는 의미입니다. 데이터베이스에 대입해보면, GitHub라는 DB에 작업을 반영하겠다는 ..