현재 이직 후에 기존 프로그램의 문제점을 해결해야하는 미션을 받았습니다. ( 경력자라 그냥 바로 미션 할당 -_- )
아직 새 근무환경 적응도 완벽하게 하지 못한지라, 업무 파악이 100% 이뤄지진 않았지만..
현재 프로그램의 문제는 이렇습니다.
1. MySQL DB 프로시저를 호출( 호출 주기 약 초당 3회이상 )
2. 프로시저 내용
- SELECT 약 10회
- DELETE 약 6회
- UPDATE 약 4회
- INSERT 약 6회
3. 현 시스템 상황
- 클라이언트에서 PLC서버의 데이터 읽어들임 ->클라이언트에서 프로시저 호출
4. 문제점
- 프로시저 호출이 잦고 프로시저 내용이 많아 프로시저가 큐에 쌓여서 누락되는 경우가 자주 발생
- 처음 프로시저가 호출되고, 두번째 프로시저가 처음 프로시저가 처리가 되기전에 DB에서 대기상태로 있는듯..
5. 해결방안추측
- 프로시저의 일부 또는 전체 로직을 외부 프로그램에서 처리
- 현 클라이언트에서 DB의 처리 결과를 받은 후, 정상 처리 되어야만 다음 데이터를 송신하도록 변경
- MySQL -> ORACLE 가 해결책이 될 수 있겠지만, 비용문제로 일단 제외
- DB튜닝 등
대략 이런 내용입니다.
저도 구글링 해서 찾아보고 이래저래 연구해본 결과, MySQL 태생적 한계라고 판단되고, 프로시저로 처리할 양이 많아질수록 느려진다고 하더군요.
결국 프로그램단에서 처리를 하고 단순 INSERT, UPDATE, DELETE 만 프로시저에서 처리한다던지 해야할 것 같습니다만,
질문의 요점은 이겁니다.
"MySQL에서 프로시저를 사용해 데이터가 누락되거나 성능 저하 현상이 발생하는데, 그 프로시저를 프로그램으로 빼내서 처리하는 방식으로 바꾼다면
위 문제점들이 해결이 될 것인가?"
아직 많이 미숙한지라 질문도 미숙할 지도 모르겠습니다만, 전문가분들 의견도 한번 들어보고 싶어서 이렇게 글을 남깁니다.
자주 이 글에 억세스 해서 확인 하겠습니다.