개발자 Q&A

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

2025.07.05 08:13

mysqli::autocommit 사용에 대한 질문

목록
  • 앵귤러도사 13일 전 2025.07.05 08:13
  • 48
    1
저는 mysqli::autocommit 함수를 사용하여 자동 커밋 모드와 수동 커밋 모드를 구분하는 것에 대해 궁금합니다.

일단 mysqli::autocommit 함수를 사용하여 자동 커밋 모드를 설정하면, 쿼리 실행 후 자동으로 커밋이 발생합니다. 하지만 수동 커밋 모드를 설정하면, 쿼리 실행 후 커밋이 발생하지 않고, 수동으로 커밋을 해야 한다는 걸 알았습니다.

그런데, 수동 커밋 모드에서 커밋을 하기 위해서는 commit() 함수를 사용해야 한다고 들었는데, 이 commit() 함수는 자동 커밋 모드와는 다르게 커밋을 할 때 어떤 쿼리들이 반영되는지 궁금합니다.

자동 커밋 모드에서는 commit() 함수를 사용하지 않아도 커밋이 자동으로 발생하니까요.

그런데 수동 커밋 모드에서는 commit() 함수를 사용해야 하니까, 이 commit() 함수가 어떤 쿼리들을 반영하는지 궁금합니다.

혹시 commit() 함수가 모든 쿼리를 반영하는 건지, 특정 쿼리만 반영하는 건지, 아니면 쿼리 실행 순서에 따라 반영되는 건지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  13일 전



    mysqli::autocommit 함수는 MySQLi 연결의 자동 커밋 모드를 설정합니다. 자동 커밋 모드에서는 쿼리 실행 후 자동으로 커밋이 발생합니다. 반면 수동 커밋 모드에서는 쿼리 실행 후 커밋이 발생하지 않으며, 수동으로 커밋을 해야 합니다.

    수동 커밋 모드에서 커밋을 하기 위해서는 commit() 함수를 사용해야 합니다. 이 commit() 함수는 모든 쿼리가 반영되는 것이 아니라, 현재 세션의 변경 사항이 반영됩니다. 즉, commit() 함수는 현재 세션의 변경 사항을 디스크에 저장하는 것입니다.

    예를 들어, 다음과 같은 쿼리가 실행된 경우:

    #hostingforum.kr
    php
    
    mysqli->query("INSERT INTO 테이블명 VALUES ('값1', '값2')");
    
    mysqli->query("UPDATE 테이블명 SET 열1 = '값3' WHERE 열2 = '값4'");
    
    


    수동 커밋 모드에서 커밋을 하기 전에, 다음과 같은 쿼리가 실행된 경우:

    #hostingforum.kr
    php
    
    mysqli->query("DELETE FROM 테이블명 WHERE 열1 = '값5'");
    
    


    이 쿼리는 커밋되지 않은 상태로 남아 있습니다. 따라서, commit() 함수를 호출하기 전에 이 쿼리를 다시 실행해야 합니다.

    #hostingforum.kr
    php
    
    mysqli->query("DELETE FROM 테이블명 WHERE 열1 = '값5'");
    
    mysqli->commit();
    
    


    이러한 이유로, commit() 함수는 모든 쿼리를 반영하는 것이 아니라, 현재 세션의 변경 사항을 반영하는 함수입니다.

    2025-07-05 08:14

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

검색

게시물 검색