article thumbnail image
Published 2021. 7. 7. 14:02
728x90


  • 데이터베이스에서 데이터 처리의 한 단위를 트랜젝션이라고 부른다.
  • 대부분의 데이터베이스는 데이터를 저장하고 수정하고 삭제하는 작업을 바로 물리적인 하드디스크에 저장된 데이터에 반영하지 않는다
  • 이는 개발자의 실수로 잘못된 명령문을 입력하였을 경우를 대비해 다시 원래 상태로 되돌리기 위한 안전장치이다.
  • 따라서 개발자가 커밋이라는 작업을 하기 전까지 입력한 명령문은 메모리에서만 동작하고 물리적인 하드디스크에 반영하지 않으며 커밋 작업이 발생하면 그때 하드디스크에 반영하게 된다.
  • 개발자가 데이터에 대한 작업을 하기위해 입력하는 명령문들의 시작부터 커밋까지를 하나의 트랜젝션이라고 부른다.

 

 

 

 

RollBack

 

  • 데이터의 저장, 삭제, 수정 등의 작업을 하고 난 후 원래의 형태로 되돌리는 작업을 의미한다.
  • 커밋이라는 작업을 하고 난 이후에는 RollBack 작업을 해도 원래의 형태로 되돌릴 수 없다.
  • 워크밴치 등의 프로그램에서는 자동으로 커밋작업이 발생하므로 RollBack을 해도 원래의 형태로 되돌릴 수 없다.

 

MySQL 워크밴치에서 자동으로 커밋작업이 발생하는 기능을 꺼서 RollBack 이 가능하게 할 수 있다.

Edit -> Preferences 에서 SQL Excution에 들어가 자동 롤백 기능을 해지하면 된다.

 

 

 

 

-- 데이터 삭제하기 

delete from test_table1;

-- 롤백하여 되돌리기

rollback;
select * from test_table1;

 

 

 

 

 

Commit

 

  • 하나의 트랜젝션을 물리적인 데이터베이스에 적용하는 작업이다
  • 이 작업을 하게 되면 RollBack을 해도 되돌릴 수 없다.
-- 커밋하고 롤백으로 되돌려보기

delete from test_table1;
commit;
select * from test_table1;
rollback;
select * from test_table1; -- 데이터가 복구되지 않는다.

 

 

 

 

SavePoint

 

  • SavePoint를 지정하면 RollBack 시 지정된 위치로 복원할 수 있다.
  • SavePoint 명령어로 지점을 지정하고 RollBack 명령어로 복원한다.
-- SavePoint 활용하기

savepoint aa; -- savepoint를 지정하고
commit; -- commit을 하고
delete from test_table1; -- 데이터를 삭제해도
rollback to aa; -- savepoint 덕분에 다시 데이터가 돌아온다

 

 

 

 

Truncate

 

  • truncate를 사용하면 지정된 테이블의 모든 로우를 삭제한다
  • delete문과 다른점은 delete문은 데이터베이스에 바로 반영하지 않으므로 rollback이 가능하지만 truncate는 바로 데이터베이스에 반영하므로 rollback이 불가능하다.

 

 

 

 

 

 

 

'MySQL' 카테고리의 다른 글

MySQL 제약조건  (0) 2021.07.07
MySQL 저장 수정 삭제  (0) 2021.07.07
MySQL 데이터 베이스 및 테이블 생성  (0) 2021.07.07
MySQL 서브쿼리(SUB QUERY)  (0) 2021.07.05
MySQL 조인(JOIN)  (0) 2021.07.05
복사했습니다!