Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transaction by currenjin #1

Open
currenjin opened this issue Oct 14, 2024 · 0 comments
Open

Transaction by currenjin #1

currenjin opened this issue Oct 14, 2024 · 0 comments

Comments

@currenjin
Copy link
Member

트랜잭션

  • 하나의 논리적 기능을 수행하기 위한 연산 단위

A가 B에게 돈을 보낸다.

  1. A의 잔고를 확인한다.
  2. A의 잔고에서 돈을 뺀다.
  3. B의 잔고에 돈을 추가한다.

원자성

  • 트랜잭션 내 하나의 단위(ex. A가 B에게 돈을 보낸다)
  • commit, rollback

일관성

  • 트랜잭션 작업이 시작되기 전과 후 일관된 데이터를 유지해야 한다.

고립성

  • 둘 이상의 트랜잭션이 동시에 실행될 때, 각각의 트랜잭션에 영향을 주면 안 된다.
  • 단계
    • 아예 격리되지 않음(Read Uncommitted)
    • 커밋된 데이터만 읽기 허용(Read Committed)
    • 반복해서 데이터를 읽어도 일관성 유지(Repeatable Read)
    • 선행 트랜잭션이 읽은 데이터는 종료될 때까지 후행 트랜잭션이 갱신 및 삭제, 추가를 불허(Serializable)

격리 수준 별 현상

  • Phantom read : 동일한 쿼리를 보내면 조회 결과가 다르다.
  • Non-Repeatable read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행 사이에 수정, 삭제 등으로 인해 결과가 다르다.
  • Dirty read : 다른 트랜잭션에 의해 수정되었지만 커밋되지 않은 행의 데이터를 읽는다.

지속성

  • 성공된 트랜잭션은 영원히 반영해야 한다.
@currenjin currenjin changed the title Transaction Transaction by currenjin Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant