다음은 브로커에 개별적으로 적용되는 파라미터로 [%broker_name] 아래에 각각 작성된다.
ACCESS_LIST는 CUBRID 브로커로 접근을 허용하는 응용 클라이언트의 IP 주소 리스트를 저장할 파일 이름을 지정하는 파라미터이다. 210.192.33.*와 210.194.34.*인 IP 주소의 접근을 허용하려면 이를 임의의 파일(ip_lists.txt)에 저장하여 이 파라미터의 값으로 파일명을 설정한다.
ACCESS_LOG는 해당 브로커의 접속 로그를 저장할 것인지 지정하는 파라미터로 기본값은 ON이다. 브로커 접속 로그 파일명은 broker_name_id.access이고, $CUBRID/log/broker 디렉터리에 저장된다.
ACCESS_MODE는 브로커의 모드를 설정하는 파라미터로 기본값은 RW이다. 자세한 내용은 관리자 안내서의 cubrid_broker.conf를 참고한다.
APPL_SERVER는 CUBRID 브로커가 생성하고 관리하는 응용 서버의 종류를 지정하는 파라미터로 기본값은 CAS이다.
APPL_SERVER_MAX_SIZE는 응용 서버(CAS)가 처리하는 프로세스 메모리 사용량의 최대 크기를 지정하는 파라미터로 단위는 MB이다.
이 파라미터는 진행 중인 트랜잭션이 있을 경우 사용자에 의해 정상 종료(커밋 혹은 롤백)되기를 기다렸다가 응용서버(CAS)를 재구동하는 동작에 영향을 준다. APPL_SERVER_MAX_SIZE_HARD_LIMIT는 APPL_SERVER_MAX_SIZE와 비슷하지만, 진행 중인 트랜잭션이 있을 경우 이를 강제 종료(롤백)하고 응용 서버(CAS)를 재구동하는 동작에 영향을 준다는 점이 다르다.
APPL_SERVER_MAX_SIZE 파라미터는 Windows 버전과 Linux 버전의 기본값이 다르므로 주의한다.
Windows 버전의 CUBRID는 32비트 버전에서는 APPL_SERVER_MAX_SIZE의 기본값이 40(MB)이고, 64비트 버전에서는 80(MB)이다. 현재 프로세스의 크기가 APPL_SERVER_MAX_SIZE의 값을 초과하면, 브로커가 해당 응용 서버를 재구동한다.
Linux 버전의 CUBRID는 APPL_SERVER_MAX_SIZE의 기본값이 0이고, 다음의 경우에 해당 응용 서버를 재구동한다.
참고 이 값을 너무 작게 설정하면 응용서버가 빈번하게 재구동될 수 있으므로 주의한다. 일반적으로 APPL_SERVER_MAX_SIZE_HARD_LIMIT의 값을 APPL_SERVER_MAX_SIZE의 값보다 크게 설정한다. 자세한 내용은 APPL_SERVER_MAX_SIZE_HARD_LIMIT의 설명을 참고한다.
APPL_SERVER_MAX_SIZE_HARD_LIMIT는 응용 서버(CAS)가 처리하는 프로세스 메모리 사용량의 최대 크기를 지정하는 파라미터로 단위는 MB이고, 기본값은 1024(MB)이다.
이 파라미터는 진행 중인 트랜잭션이 있어도 이를 강제 종료(롤백)하고 응용 서버(CAS)를 재구동하는 동작에 영향을 준다. APPL_SERVER_MAX_SIZE는 APPL_SERVER_MAX_SIZE_HARD_LIMIT와 비슷하지만, 진행 중인 트랜잭션이 있을 경우 사용자에 의해 정상 종료(커밋 혹은 롤백)되기를 기다렸다가 응용서버(CAS)를 재구동하는 동작에 영향을 준다는 점이 다르다.
참고 이 값을 너무 작게 설정하면 응용서버가 빈번하게 재구동될 수 있으므로 주의한다.
응용 서버(CAS)를 재구동할 때 메모리 사용량이 증가해도 트랜잭션이 정상 종료되기까지 기다리기 위해 APPL_SERVER_MAX_SIZE를 설정하고, 메모리 사용량이 허용하는 기준을 넘으면 트랜잭션을 강제 종료하기 위해 APPL_SERVER_MAX_SIZE_HARD_LIMIT를 설정한다. 따라서, 일반적으로 APPL_SERVER_MAX_SIZE_HARD_LIMIT의 값을 APPL_SERVER_MAX_SIZE의 값보다 크게 설정한다.
APPL_SERVER_PORT는 Windows 운영체제에서만 추가할 수 있는 파라미터로 응용 클라이언트와 통신하는 응용 서버(CAS)의 통신 포트를 지정하는 파라미터이다. 기본값은 BROKER_PORT 파라미터 값에 1을 더한 값으로 설정되며, 응용 서버의 최대 개수가 cubrid_broker_conf의 MAX_NUM_APPL_SERVER 파라미터에 의해 제한되므로 설정할 수 있는 응용 서버(CAS)의 통신 포트의 개수 역시 최대 MAX_NUM_APPL_SERVER 파라미터의 설정값으로 제한된다.
Windows 운영체제에서 응용 클라이언트와 CUBRID 브로커 사이에 방화벽이 존재한다면 반드시 BROKER_PORT 및 APPL_SERVER_PORT에서 설정된 통신 포트를 열어야 한다.
APPL_SERVER_SHM_ID는 응용 서버(CAS)가 이용하는 공유 메모리 ID를 지정하기 위한 파라미터로 시스템 내에서 유일한 값이어야 한다. 기본값은 해당 브로커의 포트와 동일한 값이다.
BROKER_PORT는 해당 브로커의 포트 번호를 지정하기 위한 파라미터로 시스템 내에서 유일한 값이면서 65535 이하의 값이어야 한다. query_editor의 브로커 포트는 기본값이 30000으로 설정되며, broker1의 브로커 포트는 기본값이 33000으로 설정된다.
CCI_DEFAULT_AUTOCOMMIT은 CCI API로 구현된 프로그램의 자동 커밋 여부를 설정하는 파라미터로 기본값은 ON이다.
이 파라미터는 CCI API 및 CCI API로 개발된 인터페이스(PHP, ODBC, OLE DB)를 사용하는 응용 프로그램에 영향을 끼치며, JDBC로 개발된 응용 프로그램에는 영향을 끼치지 않는다.
CCI_PCONNECT는 CCI connection 풀링 기능의 사용 여부를 설정하는 파라미터로 기본값은 OFF이다. 이 파라미터는 CCI API 및 CCI API로 개발된 인터페이스(PHP, ODBC, OLE DB)를 사용하는 응용 프로그램에 영향을 끼치며, JDBC로 개발된 응용 프로그램에는 영향을 끼치지 않는다.
ERROR_LOG_DIR은 브로커에 대한 에러 로그가 저장되는 디렉터리를 지정하는 파라미터로, 기본값은 log/broker/error_log이다. 브로커 에러 로그 파일명은 broker_ name_id.err이다.
KEEP_CONNECTION은 응용 서버(CAS)와 응용 클라이언트 사이의 연결 방식을 지정하는 파라미터로 ON/OFF/AUTO 중 하나로 설정된다. 이 파라미터가 OFF로 설정되면 클라이언트는 트랜잭션 단위로 응용 서버와 연결하고, ON으로 설정되면 커넥션 단위로 응용 서버와 연결한다. 또한 AUTO로 설정되면 응용 서버의 개수가 클라이언트 개수보다 많은 경우 커넥션 단위로 연결하고, 응용 서버의 개수가 클라이언트의 개수보다 적은 경우 트랜잭션 단위로 연결한다. 기본값은 AUTO이다.
LOG_BACKUP은 CUBRID 브로커가 종료될 때 브로커의 접속 로그 파일을 백업할 것인지 지정하는 파라미터이다. 기본값은 OFF이며, CUBRID 브로커가 종료될 때 $CUBRID/log/broker에 있는 접속 로그 파일(broker_name.access)이 삭제된다. ON으로 설정되면 CUBRID 브로커가 종료될 때 접속 로그 파일이 다른 이름으로 백업된다. 이때, 접속 로그의 백업 파일명은 broker_name.access.yyyymmdd.hhmi가 된다.
LOG_DIR은 SQL 로그가 저장되는 디렉터리를 지정하는 파라미터로, 기본값은 log/broker/sql_log이다. SQL 로그가 기록되는 파일명은 broker_name_id.sql.log이다.
LONG_QUERY_TIME은 장기 실행 질의(long-duration query)로 판단될 질의 실행 시간을 설정하는 파라미터이다. 기본값은 60(초)이고 소수점을 사용하여 밀리초(msec) 단위의 값을 설정할 수 있다. 예를 들어 500밀리초로 설정하려면 값을 0.5로 설정한다. 파라미터 값을 0으로 설정하면 장기 실행 질의를 판단하지 않는다.
LONG_TRANSACTION_TIME은 장기 실행 트랜잭션(long-duration transaction)으로 판단될 트랜잭션의 실행 시간을 설정하는 파라미터이다. 기본값은 60(초)이고 소수점을 사용하여 밀리초(msec) 단위의 값을 설정할 수 있다. 예를 들어 500밀리초로 설정하려면 값을 0.5로 설정한다. 파라미터 값을 0으로 설정하면 장기 실행 트랜잭션을 판단하지 않는다.
MAX_NUM_APPL_SERVER는 해당 브로커에 동시 접속할 수 있는 응용 서버(CAS)의 최대 개수를 설정하는 파라미터로, 기본값은 40이다.
DBCP 또는 WAS 같은 미들웨어 사용으로 커넥션 풀(connection pool)을 유지하는 환경에서는 MAX_NUM_APPL_SERVER 파라미터 값을 커넥션 풀의 개수와 동일하게 설정해야 한다.
MAX_PREPARED_STMT_COUNT은 사용자(응용 프로그램) 접속 당 허용하는 prepared statement의 개수를 제한하는 파라미터이다. 기본값은 2000이며 최소값은 1이다. 이 파라미터 값을 사용자가 적절히 지정함으로써, 응용 프로그램의 작성 실수로 인해 시스템이 허용하는 메모리를 초과하여 prepared statement 문을 생성하는 것을 사전에 방지할 수 있다.
MAX_QUERY_TIMEOUT은 질의 수행의 타임아웃을 설정하는 브로커 파라미터로, 질의 수행을 시작한 후 지정 시간을 초과하면 수행하던 질의를 멈추고 롤백한다.
기본값은 0(초)이며, 무한 대기를 의미한다. 값의 범위는 0부터 86400초(1일)까지이다. 응용 프로그램에서 질의 타임아웃을 설정한 경우, 0을 제외하고 MAX_QUERY_TIMEOUT 값과 응용 프로그램의 질의 타임아웃 값 중 작은 값을 적용한다.
참고 CCI 응용 프로그램의 질의 타임아웃 설정은 cci_connect_with_url 함수, cci_set_query_timeout 함수를 참고하며, JDBC 응용 프로그램의 질의 타임아웃 설정은 setQueryTimeout 메소드를 참고한다.
MAX_STRING_LENGTH는 bit, varbit, char, varchar, nchar, nchar varying인 데이터 타입에 대해서 최대 문자열 길이를 지정하는 파라미터이다. 기본값인 -1로 설정되면 데이터베이스에서 정의된 문자열 길이가 그대로 사용되고, 파라미터의 값이 100으로 설정되면 임의의 속성이 varchar(1000)으로 정의되었어도 100으로 정의된 것처럼 동작한다.
MIN_NUM_APPL_SERVER는 해당 브로커에 대한 연결 요청이 없더라도 기본적으로 대기하고 있는 응용 서버(CAS) 프로세스의 최소 개수를 설정하는 파라미터로, 기본값은 5이다.
PREFERRED_HOSTS는 브로커의 모드를 PHRO로 설정하면 반드시 설정해야 하는 파라미터로 기본값은 NULL이다. 자세한 내용은 관리자 안내서의 cubrid_broker.conf를 참고한다.
SELECT_AUTO_COMMIT은 CCI 또는 PHP에서 SELECT 문에 대한 자동 커밋 모드를 설정하는 파라미터로, 기본값은 OFF이다. 단, 자동 커밋은 prepared statement가 n개인 경우, 서버로부터 n개 질의문 전부에 대해 결과 셋을 가져오기(fetch)한 시점에만 자동 커밋이 수행되므로 주의한다. 아래는 SELECT_AUTO_COMMIT의 값이 ON일 때, 상황에 따른 자동 커밋 여부에 관한 예제이며, 보다 상세한 설명은 "API 레퍼런스 > CCI API > cci_end_tran" 함수를 참고한다.
SELECT_1 prepare
SELECT_1 execute // AUTO COMMIT O
SELECT_1 prepare
SELECT_2 prepare
SELECT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
SELECT_2 execute // AUTO COMMIT O
SELECT_1 prepare
SELECT_1 execute // AUTO COMMIT O
INSERT_1 prepare
INSERT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
INSERT_1 prepare
INSERT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
SELECT_1 prepare
SELECT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
SELECT_1 prepare
INSERT_1 prepare
SELECT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
INSERT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
INSERT_1 prepare
SELECT_1 prepare
INSERT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
SELECT_1 execute // AUTO COMMIT X -> An EXPLICIT COMMIT needed
SERVICE는 해당 브로커의 구동 여부를 결정하기 위한 파라미터로, ON 또는 OFF의 값으로 설정된다. 기본값은 ON이며, 이 파라미터가 ON으로 설정된 경우에만 해당 브로커를 구동할 수 있다.
SESSION_TIMEOUT은 응용 클라이언트에 대한 브로커 응용 서버(CAS)의 세션 타임 아웃 값을 설정하는 파라미터이다. 트랜잭션 시작 이후 커밋 혹은 롤백하지 않은 채로 아무런 요청이 없는 상태에서 이 파라미터가 설정한 시간을 초과하면 해당 응용 클라이언트와 응용 서버(CAS) 간의 접속이 종료된다. 기본값은 300(초)이다.
SLOW SQL 로깅 여부를 지정하는 파라미터이다. 기본값은 ON이다. 이 값이 ON이면 LONG_QUERY_TIME 시간을 초과한 장기 실행(long-duration query) 질의문 또는 에러가 발생한 질의문이 SLOW SQL 로그 파일에 저장된다. 생성되는 파일의 이름은 broker_name_id.slow.log이며, SLOW_LOG_DIR 이하에 생성된다.
SLOW SQL 로그 파일이 생성되는 디렉터리를 지정한다. 기본값은 log/broker/sql_log이다.
SOURCE_ENV는 브로커 각각에 대해 개별적으로 운영체제 환경 변수를 설정할 수 있는 파일을 정하는 파라미터로, 파일 확장자는 반드시 env여야 한다. cubrid.conf에서 지정하는 모든 파라미터는 환경 변수를 통해서도 설정할 수 있다. 예를 들어, cubrid.conf에서 lock_timeout_in_secs는 환경 변수 CUBRID_LOCK_TIMEOUT_IN_SECS로 지정할 수 있다. 또 다른 예로, broker1에서만 데이터 정의문 수행을 차단하려면 SOURCE_ENV에서 지정한 파일에 CUBRID_BLOCK_DDL_STATEMENT를 1로 설정하면 된다.
환경변수가 있으면 cubrid.conf보다 우선한다. 기본값은 cubrid.env이다.
SQL_LOG는 응용 클라이언트의 요청에 따라 응용 서버(CAS)가 처리한 SQL 문에 대해 어떤 로그를 기록할 것인지 결정하는 파라미터로 기본값은 ON이다. 이 파라미터가 ON으로 설정되면, 모든 로그를 기록한다. SQL 로그가 기록되는 파일명은 broker_name_id.sql.log이며, 설치 디렉터리의 log/broker/sql_log 디렉터리에 생성된다. 파라미터 값은 다음과 같다.
SQL_LOG_MAX_SIZE는 SQL 로그 파일과 SLOW SQL 로그 파일의 최대 크기를 지정하는 파라미터로 기본값은 100,000(KB)이다. SQL_LOG 파라미터가 ON으로 설정된 경우에 생성되는 SQL 로그 파일의 크기가 파라미터의 설정값에 도달하면 broker_name_id.sql.log.bak이 생성된다. SLOW_LOG 파라미터가 ON으로 설정된 경우에 생성되는 SLOW SQL 로그 파일의 크기가 이 파라미터의 설정값에 도달하면 broker_name_id.slow.log.bak이 생성된다.
STATEMENT_POOLING은 statement 풀링 기능의 사용 여부를 설정하는 파라미터로 기본값은 ON이다.
CUBRID는 트랜잭션이 커밋 또는 롤백되는 경우, 해당 클라이언트 세션에 존재하는 prepared statement의 핸들을 모두 close하는데, STATEMENT_POOLING의 값이 ON인 경우에는 prepared statement의 핸들을 지속적으로 풀에 유지하므로 이를 재사용할 수 있다. 따라서, prepared statement를 재사용하는 일반 응용 프로그램 또는 statement pooling이 구현된 DBCP와 같은 라이브러리가 적용된 환경에서는 반드시 디폴트 설정(ON)을 유지해야 한다.
STATEMENT_POOLING의 값이 OFF인 상태에서 트랜잭션 커밋 또는 종료 이후 해당 prepared statement를 실행하면 다음과 같은 메시지가 출력된다.
Caused by: cubrid.jdbc.driver.CUBRIDException: Attempt to access a closed Statement.
TIME_TO_KILL은 자동 추가된 응용 서버 중 유휴 상태의 응용 서버(CAS)를 제거하기 위한 기준 시간을 설정하는 파라미터로 기본값은 120(초)이다. 유휴 상태란 작업이 없이 쉬고 있는 상태로, 이 상태가 TIME_TO_KILL 시간 이상 유지되면 해당 응용 서버(CAS)를 제거한다.
이 파라미터에 설정된 값은 자동 추가된 응용 서버에만 적용되므로 AUTO_ADD_APPL_SERVER 파라미터가 ON인 경우에만 적용된다. TIME_TO_KILL 파라미터의 값을 너무 작게 설정하면 응용 서버(CAS)의 제거/추가가 너무 빈번하게 발생할 수 있으므로 주의한다.