Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

mysql transaction 명령어로 안전하게 데이터를 변경하자

MYSQL, 20213 min read

배경

지금 회사에서는 mysql 을 사용한다. 개발하는 과정에서 다같이 사용하고 있는 데이터를 수정해야 할 때 잘못된 데이터로 변경한다면 이전 데이터로 되돌릴 수 없다.

그래서 트랜잭션 도구를 사용해서 이전으로 되돌릴 수 있다.

트랜잭션 도구

START TRANSACTION;
-- COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL 추적
COMMIT;
-- 모든 코드를 실행(문제가 없을 경우에)
ROLLBACK;
-- START TRANSACTION 실행 전 상태로 되돌림(문제 생기면)

어떻게 사용하지?

먼저 데이터를 변경하는 이슈가 생긴다면 sql 를 만들고 바로 실행시키는 것이 아닌

START TRANSACTION 을 입력한다.

그후 작성한 sql 을 실행시키고 제대로 데이터를 변경했는지 검색한다 (select)

확인했을때 제대로 변경되었다면 COMMIT 을 하고 작업을 마치고

만약 다시 이전으로 되돌려야 한다면 START TRANSACTION 을 실행한다.

트랜잭션 관련 글 기록

MySQL의 스토리지 엔진

MyISAM 트랜잭션을 지원하지 않는다 InnoDB 트랜잭션을 지원

트랜잭션 : 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 잉상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100 % 적용되거나 (commit 을 실행했을 때) 아무것도 적용되지 않아야함을 보장해 주는 것

  • 메일 전송이나 ftp 파일 전송 작업 또는 네트워크를 통해 원격 서버와 통신하는 등과 같은 작업은 어떻게 해서든 DBMS 의 트랜잭션 내에서 제거하는 것이 좋다. 프로그램이 실행되는 동안 메일 서버와 통신할 수 없는 상황이 발생한다면 웹 서버뿐 아니라 DBMS 서버까지 위험해지는 상황이 발생

  • 네트워크 작업이 있는 경우에는 반드시 트랜잭션에서 배제해야 한다 이런 실수로 인해 dbms 서버가 높은 부하 상태로 빠지거나 위험한 상태에 빠지는 경우가 빈번히 발생한다

© 2024 by GwiyeomGo Tech Blog. All rights reserved.