(MySQL) 트랜잭션의 이해
*트랜잭션은 꼭 여러개의 변경 작업을 수행하는 쿼리가 조합됐을 때만 의미 있는 개념은아니다. 트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100%적용되거나 (Commit 실행했을 때) 또는 아무것도 적용되지 않아야(ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류가 발생했을 때)함을 보장해주는 것이다.
1. MyISAM vs InnoDB
두 엔진에 똑같은 테이블을 생성한다.
mysql> CREATE TABLE tab_myisam(
fdpk INT NOT NULL PRIMARY KEY(fdpk) )ENGINE=MyISAM;
mysql> INSERT INTO tab_myisam (fdpk) VALUES(3);
mysql> CREATE TABLE tab_innodb(
fdpk INT NOT NULL PRIMARY KEY(fdpk) )ENGINE=INNODB ;
mysql> INSERT INTO tab_innodb (fdpk) VALUES(3);
이와 같이 각각 저장 후,AUTO-COMMIT 모드에서 다음 커리 문장을 각각테이블에서 실행한다.
mysql>INSERT INTO tab_myisam (fdpk) VALUES(1),(2),(3);
mysql>INSERT INTO tab_innodb (fdpk) VALUES(1),(2),(3);
그 결과 myisam에는 1,2,3이 다 들어가있지만 innodb는 3만 들어갔다.
1. MyISAM vs InnoDB
두 엔진에 똑같은 테이블을 생성한다.
mysql> CREATE TABLE tab_myisam(
fdpk INT NOT NULL PRIMARY KEY(fdpk) )ENGINE=MyISAM;
mysql> INSERT INTO tab_myisam (fdpk) VALUES(3);
mysql> CREATE TABLE tab_innodb(
fdpk INT NOT NULL PRIMARY KEY(fdpk) )ENGINE=INNODB ;
mysql> INSERT INTO tab_innodb (fdpk) VALUES(3);
이와 같이 각각 저장 후,AUTO-COMMIT 모드에서 다음 커리 문장을 각각테이블에서 실행한다.
mysql>INSERT INTO tab_myisam (fdpk) VALUES(1),(2),(3);
mysql>INSERT INTO tab_innodb (fdpk) VALUES(1),(2),(3);
그 결과 myisam에는 1,2,3이 다 들어가있지만 innodb는 3만 들어갔다.
댓글
댓글 쓰기