x_broker1 : 34000
x_broker2 : 35000
이렇게 브로커 2개를 만들고요
하나의 컴퓨터에서 응용프로그램(c#) 2개를 실행합니다.
A 프로그램은 x_broker1을 사용하고
B프로그램은 x_broker2을 사용합니다.
이렇게 프로그램하는게 잇점이 있나요?
그냥 디포트 브로커 한개를 사용해도 성능에는 별문제 없나요?
두개의 프로그램은 30초 주기로 1000개의 insert문이 실행됩니다.
이 브로커에 CCI_AUTO_COMMIT = OFF로 설정하면 무슨 의미인가요?
응용프로그램에서 commit() 하기 전까지 db에 반영이 안된다는 소리인가요?
안녕하세요. 질문 감사 드리며, 답변이 늦어져 죄송합니다.
Broker에 대하여 먼저 추가 설명을 드리도록 하겠습니다.
CUBRID Broker는 cas에게 작업을 할당하며, cas가 DB에 직접 연결되어 작업을 수행합니다.
cas는 작업 후, 연결을 다른 데이터베이스에 할당되지 않는 한 connection pool에 의해 DB에 대한 연결을 유지하게 됩니다. 만약, 다른 데이터베이스에 할당된다면 기존 연결을 끊고 새로 연결을 시도하게 됩니다.
말씀하신 응용 프로그램이 각각 다른 DB에 연결하여 수행하는 것이라면, 하나의 브로커를 이용하여 두개의 DB에 연결하는 경우 기존 가지고 있던 연결을 재사용하지 못하게 됩니다.
이 때문에 연결 overhead가 발생할 가능성이 있으므로, 각각의 브로커를 할당하여 사용하시는 것을 권장합니다.
또한 30초 주기로 1000개의 insert 문이 번갈아 가며 수행되기 때문에 위에 말씀하신 것처럼 각각의 프로그램이 브로커를 할당 받는 것이 성능에 더 좋을 것으로 판단됩니다.
추가로 각각의 다른 목적을 가지고 있는 프로그램들이 수행 중이고, 추후 log 분석 시에도 브로커가 나누어져 있어야 로그가 각각 남으므로 이점이 더 많습니다.
CCI_DEFAULT_AUTOCOMMIT은 CCI로 작성된 인터페이스(PHP, ODBC, OLEDB 등) 사용 시, 자동 커밋 여부를 판단하는 파라미터 입니다.
OFF로 설정이 되어있어야, 트랜잭션 처리(rollback, commit)가 가능합니다.
더 자세한 사항은 매뉴얼(http://www.cubrid.com/online_manual/843/pm/pm_broker_one.htm)을 참고하시면 됩니다.