ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL Begin 과 Start Transaction
    DataBase/MySQL 2022. 12. 16. 19:32
    • START TRANSACTIONBEGIN 은 모두 새로운 트랜잭션을 만듭니다.
    • COMMIT 은 현재 트랜잭션을 commit 한다는 의미로, 해당 트랜잭션을 영구적으로 반영되게 합니다.
    • ROLLBACK 은 현재 트랜잭션을 다시 되돌린다는 의미로, 현재 트랜잭션의 변화를 취소한다는 의미입니다.
    • SET autocommit 은 현재 세션에 대해 자동 반영을 비활성화 시키거나 활성화 시킵니다.

    기본값으로 autocommit 은 활성화 되어 있습니다. 즉, 모든 SQL 구문은 START TRANSACTION , COMMIT 에 둘러 쌓인 것처럼 모든 구문은 원자성을 가지고 있습니다. autocommit 이 켜져있는 상태에서는 ROLLBACK 은 아무런 효과가 없습니다. 단, SQL 구문이 실행 중 문제가 있다면 해당 구문은 자동으로 롤백됩니다.

    autocommit 을 비활성화 하고 싶으면 START TRANSACTION 을 사용하면 됩니다.

    START TRANSACTION 을 사용하면 COMMIT 이나 ROLLBACK 으로 트랜잭션을 종료시키기 전까지 autocommit 은 비활성화 됩니다.

    START TRANSACTION 을 사용해서 autocommit 을 비활성화 시키는 것을 암묵적(implicit) 으로 비활성화 한다고 표현합니다. autocommit 을 명시적(explicit) 으로 비활성화 하고 싶으면 다음과 같이 SQL 쿼리를 입력하면 됩니다.

    SET autocommit = 0;

    autocommit 을 비활성화(0 으로 설정) 하면 transaction-safe 테이블(InnoDB 또는 NDB) 은 쿼리를 즉시반영하지 않습니다. 이를 반영하기 위해서 COMMIT 을 사용해야 하고 반영하지 않기 위해선 ROLLBACK 을 하면 됩니다.

    autocommit 은 세션 변수이고 연결된 세션마다 설정되어 있습니다. 즉 세션별로 다르게 설정할 수 있습니다.

    BEGINBEGIN WORK는 트랜잭션 시작을 위한 START TRANSACTION의 별칭으로 지원됩니다. START TRANSACTION은 표준 SQL 구문이며 임시 트랜잭션을 시작하는 데 권장되는 방법이며 BEGIN이 허용하지 않는 수정자를 허용합니다.

    'DataBase > MySQL' 카테고리의 다른 글

    B-Tree 와 B+Tree 의 차이점  (0) 2022.08.02
    체인지 버퍼  (0) 2022.08.02
    MySQL 변수 종류  (0) 2022.04.27
    MySQL 사용자 변수  (0) 2022.04.25

    댓글