원티드 챌린지 백엔드 2차 - 트랜잭션 / 스토리지 엔진 / 격리수준

jongeun·2023년 2월 11일
0

트랜잭션(중요)

  • 작업의 완전성을 보장한다.
    • 사용자의 작업셋을 모두 완벽하게 처리하거나, 처리하지 못하면 원상태로 복구한다.
    • 트랜잭션 지원하는 기능 써보기]
    • 커밋하기 전까지 하나의 단위
    • RDB

스토리지 엔진

  • myisam
  • InnoDB(중요)
    • 요즘은 다 innodb를 사용함
    • 장점: 버퍼링 / Foreign key / transaction
  • memory(서버꺼지면 날라감)

Database Lock

  • 글로벌 락 : 서버 전체에 lock을 거는 것(read는 가능, wirte불가)
  • 테이블 락 : 테이블에다가 lock을 걸어 조작을 못하게 하는 것
    • read lock : wirte불가
    • wirte lock : read 불가
  • 네임드 락 : 네임드 락을 획득해야만 작업 가능
  • 메타데이터 락

< InnoDB>

  • 레코드락 : row에 lock을 거는 것(내가 건드리는 것 모두)
  • auto increment lock : 한번에 한명씩만

Isolation level - 격리수준(중요)

  • 트랜잭션 간의 격리
  1. READ UNCOMMITTED
  2. READ COOMMITTED
    • 트랜잭션이 하나면 하나만 보여야 되는데, 커밋되면 바로 불러옴
  3. REPEATABLE READ
    • 일반적으로 사용함(위의 것 보완)
    • 커밋한다고 바뀌지 않음(추가를 하든, 수정을 하든)
  4. SERIALIZABLE : 트랜잭션을 하면 접근 자체가 안됨
    • 하나의 트랜잭션에서 락을 가지고 있는 레코드에 따른 트랜잭션이 접근할 수 없음
    • 무조건 lock을 획득해야함
    • 비효율적이어서 잘 안쓰고, InnoDB에서는 필요 없음
profile
기록으로 성장하는 개발자 되기

0개의 댓글