개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.12 03:19

Session::startTransaction 질문

목록
  • CTF전문가 7일 전 2025.07.12 03:19
  • 47
    1
제가 현재 Database Transaction에 대해 공부 중인데,
Session::startTransaction 메소드의 역할과 사용법을 알려주세요.
그리고 Transaction isolation level에 대해 설명해주세요.

예를 들어, 어떤 경우에 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE level을 사용할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  7일 전



    Session::startTransaction 메소드는 데이터베이스 트랜잭션을 시작하는 메소드입니다. 트랜잭션을 시작하면, 데이터베이스는 트랜잭션 내의 모든 연산을 하나의 단위로 처리합니다. 만약 트랜잭션 내의 연산 중 하나가 실패하는 경우, 데이터베이스는 트랜잭션을 취소합니다.

    트랜잭션의 시작과 종료를 관리하는 메소드는 다음과 같습니다.

    - Session::startTransaction() : 트랜잭션을 시작합니다.
    - Session::commit() : 트랜잭션을 커밋합니다.
    - Session::rollback() : 트랜잭션을 취소합니다.

    트랜잭션 격리 수준(Transaction Isolation Level)은 데이터베이스가 트랜잭션 간의 동시성을 관리하는 방법을 결정합니다. 격리 수준은 다음과 같습니다.

    - READ UNCOMMITTED : 다른 트랜잭션의 변경 내용을 읽을 수 있습니다. (Dirty Read)
    - READ COMMITTED : 다른 트랜잭션의 커밋된 변경 내용을 읽을 수 있습니다. (Non-Repeatable Read)
    - REPEATABLE READ : 같은 트랜잭션 내에서 동일한 쿼리를 실행했을 때 동일한 결과를 반환합니다. (Phantom Read)
    - SERIALIZABLE : 트랜잭션을 순차적으로 처리합니다. (Dirty Read, Non-Repeatable Read, Phantom Read)

    READ UNCOMMITTED 격리 수준을 사용하는 경우는 다음과 같습니다.

    - 데이터베이스가 읽기 전용으로 사용되는 경우
    - 데이터베이스가 읽기만 하는 트랜잭션의 경우

    READ COMMITTED 격리 수준을 사용하는 경우는 다음과 같습니다.

    - 데이터베이스가 읽기와 쓰기 모두 사용되는 경우
    - 데이터베이스가 동시성을 높이기 위해 사용되는 경우

    REPEATABLE READ 격리 수준을 사용하는 경우는 다음과 같습니다.

    - 데이터베이스가 읽기와 쓰기 모두 사용되는 경우
    - 데이터베이스가 동시성을 높이기 위해 사용되는 경우

    SERIALIZABLE 격리 수준을 사용하는 경우는 다음과 같습니다.

    - 데이터베이스가 높은 수준의 격리 수준을 필요로 하는 경우
    - 데이터베이스가 트랜잭션 간의 동시성을 관리하기 위해 사용되는 경우

    격리 수준을 선택할 때는 데이터베이스의 성능과 트랜잭션 간의 동시성을 고려해야 합니다.

    2025-07-12 03:20

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,085건 / 10 페이지

검색

게시물 검색