현재 진행중인 업무가 설비로부터 직접 수많은 DATA를 그것도 아주 빠른 시간(0.5ms)내에 수집하여 DB에 보관하고 이를 검색하여
분석하는 기능입니다.
그렇다보니 검색은 커녕 저장하기 조차 힘든 상황에서 시스템 성능을 고려하는 것이 최우선 과제가 되버렸습니다.
사용중인 시스템은 서버라고는 하나, 겨우 XEON DUAL CPU에 1GB 의 RAM를 사용하는 정도입니다.
어찌됐건간에, 본론으로 들어가자면,
TABLE구성을 가급적 간단하게 구성하였습니다. (분석 형태가 다양하지 않다는 것과 특히, 속도문제 때문에....)
예를 들면, 1회 수집시 1개 ROW에는 몇개의 주요 COLUMN외에 DATA부는 전부 1개의 COLUMN으로 구성하였습니다.
문제는 이겁니다. 1개의 COLUMN으로 구성된 DATA부는 DB 구축에 있어서 정형화를 꾀하지 못했다는 비난을 맞아야 하겠지만,
일단 불가항력으로 봐주시고......,
검색조건에 맞는 저장 DATA를 SELECT하고자 하는데,
1) 일단 SELECT후 프로그래밍에 의해 DATA부를 각각의 성격대로 분리하여 비교하는 방법
2) VIEW TABLE을 생성(DATA부 분리)하여 검색조건의 값을 저장한후 SELECT의 조건절에 의해 한번에 처리되도록 하는 방법,
위 두가지 방법중 속도가 어느 편이 더 나을지 모르겠습니다.
참고로 시스템에 주는 성능 측면(CPU사용율, 메모리 사용율)을 고려해보면, 2)의 경우는 서버에서 실행되기 땜에 서버 부담율이 크다는
것이고, 1)의 경우는 대부분의 JOB이 클라이언트에서 실행되기 땜에 서버 부담율은 줄여준다는 차이가 있는 걸로 보이네요.
고수님들에 의견을 듣고 싶습니다.
|