본문 바로가기
데이터노트/DB접속툴

DBeaver 디비툴에서의 Auto-Commit 설정과 고려사항

by 테크한스 2024. 1. 13.

이번시간은 많은 개발자들이 무료로 잘 사용하고 있는 DBeaver 에서

아주 중요한 부분을 간과하고 사용하는 경우가 있어서 리마인드 차원에서 작성합니다.

 

Commit에 대한 정의는

COMMIT 문은 관계형 데이터베이스 관리 시스템(RDBMS)에서 트랜잭션을 종료하고 다른 사용자에게 변경된 모든 사항을 보이도록 만드는 문이다. 일반적으로 트랜잭션 종료시 해당 업데이트를 확정한다는 의미에서 "커밋"이라고 사용한다.

 

즉 해당 쿼리에 대해 확정한다는 의미입니다.

 

이것을 자동으로 설정하면 Auto-Commit으로 설정한다는 것이지요

 

개발툴에서도 사실은 수동 커밋보다는 오토 커밋으로 코딩하는 경우가 많습니다.

 

그런데 서버 운영하는 입장에서 데이터도 함께 운영시 운영서버에서 직접 원장이나 마스터에

직접 쿼리(CRUD)를 날리는 것은 굉장히 위험할 수도 있는 일이 되겠지요

 

정책에 따라 다르지만 민감한 데이터를 다루는 조직일 수록

보수적이면 보주적일 수록 안전하고 롱런(?)하는 일자리를 얻을 수 있다고 보면 됩니다.

 

그러한 조직에서 DBeaver의 auto-commit 옵션의 사용법과 위험성에 대해 알아봅니다.

 

DBeaver의 환경설정 부분을 보면 

 

하단의 Auto-commit by default가 체크되어 있는 것을 확인할 수 있습니다.

대개 이런경우는 디폴트 값이 그렇습니다.

 

개발기에서는 이렇게 사용하는 경우가 많이 있지요

그럼 운영기는 어떻게 될 까요?

기본 설정에서 Production 부분을 보면 Auto-commit by default 이 uncheck 되어 있음을

확인할 수 있습니다.

 

어떻게 서버를 어떤 모드로 운영할지는 조직마다 정책마다 다릅니다.

여기서는 그것을 알고 사용하고 모르고 사용하는 위험성에 대해 간단히 이야기합니다.

 

 

(1) Auto-commit by default 가 체크되어 있는 경우

 

이 경우는 어떤 쿼리이든 auto-commit으로 commit 됩니다.  (rollback 불가)

그러므로 개발자든 운영자든 그냥 쿼리 실행하면 반영됩니다. (쉽죠?)

 

하단 메뉴 바에서 Auto 라고 보이는 거 확인되시죠?  (Auto-commit by default로 설정되어 있다는 의미)

그러나 그 왼편에 커밋 롤백이라는 버튼은 비활성화되어 있습니다.

 

 

 

(2) Auto-commit by default 가 언체크되어 있는 경우

 

메뉴바의 아이콘이 먼가 위의 경우와 다른 것이 보이지요? 즉 Auto 가 아니라 None 이네요

그리고 커밋 과 롤백 버튼이 활성화 되어 있습니다.

 

 

이 두가지 경우 메뉴가 어떻게 변하는 지도 모르고 운영하는 경우도 분명 있다.

 

 

 

운영하면서 분명 안전을 위해서 auto-commit을 OFF 하고 사용하는데 실제 수동 commit을 안하고 퇴근하는 경우

어떻게 될까요?

 

즉 위와 같은 상황이 되는 거죠

22개 commit 안하고 퇴근하는 상태 말이죠

 

이런 경우 한개의 마스터 중요 테이블에 이런 상태에서 해당 동일한 테이블에 외부에서 과도한 TX 발생하며 접속이 되면 해당 데이터베이스가 LOCK 걸려서 나중에 해당 DB서버를 물리적 재기동하는 경우도 생깁니다.

 

굉장히 기본이면서 중요한 이야기입니다.

 

그러므로 자신의 조직과 정책에서 어떻게 운영하든 실무자 입장에서는 반드시 디비 SQL Commit 상태를 확인하거나

그것이 귀찮으면 Auto-commit으로 운영하는 것이 더 안전할 수 있습니다.

 

 

 

 

감사합니다.

'데이터노트 > DB접속툴' 카테고리의 다른 글

무료디비접속툴 - DBeaver  (0) 2021.10.23

댓글