민서네집

MySQL - AUTOCOMMIT 여부 확인하기 본문

Database/MySQL

MySQL - AUTOCOMMIT 여부 확인하기

브라이언7 2013. 5. 9. 08:08

[원문] http://junho85.tistory.com/11


SELECT @@AUTOCOMMIT;   // AUTOCOMMIT 여부 확인


SET AUTOCOMMIT = TRUE;   // AUTOCOMMIT 설정

SET AUTOCOMMIT = FALSE;   // AUTOCOMMIT 해제


COMMIT; // 커밋

ROLLBACK; // 롤백


참고로 일반적으로 기본 DB Engine으로 지정되는 MyISAM 은 TRANSACTION 을 지원하지 않기 때문에 
ROLLBACK이니 COMMIT이니 무의미 하다.
TRANSACTION을 지원하지 않으면 무조건 AUTOCOMMIT된다고 보면 된다.

그러므로 TRANSACTION기능을 사용하고자 한다면 TABLE을 생성할때 TRANSACTION을 지원하는 DB엔진을 사용하면 된다.
TRANSACTION기능을 지원하지 않는 DB엔진을 사용하면 AUTOCOMMIT이 FALSE라도 바로바로 적용되니 주의하도록 하자.


나는 지금 MySQL 5.6  버전을 사용 중인데, AUTOCOMMIT 을 FALSE 로 하니, TRANSACTION 이 적용되었다. 나는 디폴트로 사용 중인데, Table Engine을 보니 InnoDB 로 되어 있었다. 지금은 디폴트가 InnoDB 로 되어 있나보다.



Spring MVC 프레임워크에서 개발 DB로 MySQL을 사용 중인데, 

SELECT @@AUTOCOMMIT; 결과가 1 이 나온다.


그래도 Transaction Test 를 해 보니 Runtime Error 가 발생하면 Rollback 이 잘 되었다.


아마도 Spring MVC 프레임워크에서 DB 에 연결할 때 AUTOCOMMIT 모드를 FALSE 로 바꿔서 연결하는것 같다.



MySQL 에서 autocommit 속성을 고정시키기 위해서는


[참고] http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_autocommit


나는 Windows7 운영체제를 사용 중인데, my.ini 파일이 아래 경로에 설치되어 있다.


C:\ProgramData\MySQL\MySQL Server 5.6


[mysqld] 섹션 밑에


autocommit=0


라고 적어주면 된다.


< MySQL Parameter 값 모두 조회하기 >


show variables;


Variable_name autocommit 의 Value가  ON 인지 OFF 인지 확인한다.


Comments