시작하며
안녕하세요! 껌딱지 개발팀에서 기술 리드이자 백엔드 파트 리드 및 개발을 맡고 있는 BackEnd 개발자 종하입니다!
오늘은 동아리 기수가 정식으로 시작되고 벌써 3번째 정규 경기를 가지면서 여러 경고 정산이나 많은 상황에서 수동으로 DB에 쿼리를 날려서 상태를 업데이트해야 하는 상황이 있었습니다.. (완벽하지 못한 개발로 인한..인 듯..)
여하튼 실제로 운영 중인 데이터베이스에 잘못 날리는 업데이트 쿼리는 엄청난 영향을 불러올 수도 있기 때문에 쫄리는 마음에 열심히 cli로 트랜잭션을 사용하는 법을 찾아와서 야무지게 사용하고 여러분들에게도 공유해 드리려고 합니다!
트랜젝션이 뭐야?
일단은 트랜젝션이 무엇인지 간단하게 짚고 넘어가는 시간이 필요할 것 같습니다.개인 블로그에 간단하게 정리한 글을 보면 '트랜젝션이란 데이터를 추가, 수정, 삭제를 하는 하나의 큰 "작업 단위" 라고 생각합니다' 라고 되어있네요. 지금 생각해보면 약간 설명이 빈약하지만 어느정도 맞는 말 같습니다. 조금 비유를 해보자면 컴퓨터에 가상머신을 설치하여 그 공간에서 자유롭게 사용하고 스냅샷으로 롤백도 하고 하는것처럼 트랜젝션도 하나의 작업 공간을 열어서 만약 문제가 생겼을때에는 롤백을 하고 문제 없이 모든게 잘 진행되었으면 최종적으로 커밋을 하여 데이터베이스에 반영하는 하나의 작업 단위라고 생각합니다.
자세한 설명은 제 블로글 참고해주세요.
https://archanwriteup.tistory.com/entry/트랜젝션이란-트랜젝션-쉽게-이해하기-찍먹하기#1.%20트랜젝션이란%20무엇인가
MySql CLI에서 트랜젝션 사용하는 법
정말 간단합니다, 트랜젝션을 열고 싶다면 start transaction; 명령어를 사용해주시면 됩니다.
그런 다음 원하는 작업들을 해주면 됩니다
저는 출석 관련 수정하는 쿼리를 실행시켰는데 잘 업데이트가 된 모습입니다.
그런데 만약 여기서 실수를 해서 롤백하고 싶다면?
rollback; 명령어를 사용해준다면 전처럼 다시 데이터가 롤백된것을 확인할 수 있습니다!!
그리고 작업이 모두 완료되었다면 위처럼 commit;을 입력하면 변경사항이 반영되고 트랜젝션이 종료되게 됩니다!
마치며
우리 팀원들이 이 글을 읽고 운영시 사고를 예방할 수 있으면 좋을것 같은 마음에 내용을 다루게 되었습니다!
역시 운영시에는 하나의 작은 쿼리도 매우 심장 쫄리게 하다는것을 다시 한번 느끼게 되었습니다!
긴 글 읽어주셔서 감사합니다!
'우리들의 성장일지' 카테고리의 다른 글
[팀 껌딱지] PWA 만들기 (0) | 2024.07.31 |
---|---|
[팀 껌딱지] 서비스 블루프린트(Service Blueprint)란? (0) | 2024.07.09 |
[팀껌딱지] 당신의 고객은 누구인가? (0) | 2024.03.26 |
[팀 껌딱지] 안정적인 서비스 제공을 위한 테스트 코드의 필요성과 활용 (0) | 2024.03.10 |
[팀 껌딱지] 백엔드 개발자가 꼭 알아야 하는 클라우드 핵심 개념 (0) | 2024.03.03 |