Maria DB에서 Transaction 설정할 방법이 있나요? 0 1 96

by 정차니 [DB 기타] [2020.07.30 11:29:45]


안녕하세요. 저는 JAVA 개발자입니다.

DB쪽은 기초적으로 사용하는 수준입니다. DB설치하고 테이블 생성하고 쿼리 만들어 돌리고..

일반적은 프로그램 개발자들이 DB 접근하는 수준 이상은 잘 모릅니다. (튜닝같은거 해본적 없다는)

 

현재 시스템이.. MARIA DB가 하나 설치된 서버가 하나 있고요.

14대의 서버가 위 서버의 DB에 접속하여 5분 단위로 주기적으로 동일한 테이블에 동일한 2건의 쿼리 ( select & update ) 를 진행하고 있습니다.

동시에 접근하면 LOCK이 걸릴 것을 우려하여

select 와 update를 순차적으로 하는 Function을 SERIALIZABLE 으로 설정하여 진행하고...

14대 서버를 host명을 기준으로 삼아 5초 단위로 INTERVAL을 두어서 접근 시키고 있습니다.

즉.. 1번 서버가 13시20분0초에 DB에 접속하여 select와 update를 SERIALIZABLE 설정하에 처리하고

2번 서버가 13시20분5초에 DB에 접속하여 select와 update를 SERIALIZABLE 설정하에 처리하고

이런식으로 14번 서버까지 해당 쿼리를 실행하게 됩니다.

이를 5분마다 반복하는 시스템인데요.

 

이는 저희가 DB 설정에.. 동시 접속, update로 인한 DB 내용 변경 등으로 LOCK이 발생하는 것을 방지하는 방법을 몰라 프로그램(JAVA) 기반에서 해결하려고 진행한 방법입니다.

근데 저 버려지는 대기 시간(각 서버별로 강제적으로 부여한)에 대해 고객사에서 고도화 요청을 하여 계약이 진행된 상황입니다. 그런데, 프로그램적으로 하게되면 저 이상 방법이 없거든요....

혹시 DB 차원에서 여러 서버에서 동시에 저런식으로 요청이 들어올 때 데이터 무결성을 지키면서 순차적으로 처리를 보장할 기술이나 방법이 있는지 여쭤봅니다.

이런이런 것을 조사해보세요.. 이런 방향에서 기술을 찾아보세요.. 이런 답변도 감사합니다.

 

조언 부탁드립니다.

감사합니다.

by 우리집아찌 [2020.07.30 17:57:26]

타 DB 서버가 돌면서 DB 쪽을 업데이트 한다는 말씀인가요?

좀 설명이 어렵습니다. 

BATCH 성이면 COMMIT 단위를 짧게 가져가는 방법도 있습니다.

아니면 구조적으로 UPDATE 가 아닌 INSERT 로 TABLE를 구성해서 최종값을 SELECT 하는 방법도 있지요.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입