브로커별 파라미터

다음은 브로커에 개별적으로 적용되는 파라미터로 [%broker_name] 아래에 각각 작성된다.

SERVICE

SERVICE는 해당 브로커의 구동 여부를 결정하기 위한 파라미터로, ON 또는 OFF의 값으로 설정된다. 기본값은 ON이며, 이 파라미터가 ON으로 설정된 경우에만 해당 브로커를 구동할 수 있다.

BROKER_PORT

BROKER_PORT는 해당 브로커의 포트 번호를 지정하기 위한 파라미터로 시스템 내에서 유일한 값이면서 65535 이하의 값이어야 한다. query_editor의 브로커 포트는 기본값이 30000으로 설정되며, broker1의 브로커 포트는 기본값이 33000으로 설정된다.

MIN_NUM_APPL_SERVER

MIN_NUM_APPL_SERVER는 해당 브로커에 대한 연결 요청이 없더라도 기본적으로 대기하고 있는 응용 서버(CAS) 프로세스의 최소 개수를 설정하는 파라미터로, 기본값은 5이다.

MAX_NUM_APPL_SERVER

MAX_NUM_APPL_SERVER는 해당 브로커에 동시 접속할 수 있는 응용 서버(CAS)의 최대 개수를 설정하는 파라미터로, 기본값은 40이다.

DBCP 또는 WAS 같은 미들웨어 사용으로 커넥션 풀(connection pool)을 유지하는 환경에서는 MAX_NUM_APPL_SERVER 파라미터 값을 커넥션 풀의 개수와 동일하게 설정해야 한다.

APPL_SERVER_SHM_ID

APPL_SERVER_SHM_ID는 응용서버(CAS)가 이용하는 공유 메모리 ID를 지정하기 위한 파라미터로 시스템 내에서 유일한 값이어야 한다. 기본값은 해당 브로커의 포트와 동일한 값이다.

APPL_SERVER_MAX_SIZE

APPL_SERVER_MAX_SIZE는 응용서버(CAS)가 처리하는 프로세스 메모리 사용량의 최대 크기를 지정하는 파라미터로 단위는 MB이다. 이 파라미터의 값은 응용서버(CAS)를 강제로 재구동하는 정책에 영향을 미치므로 서버 운영 환경을 고려하여 설정해야 한다. 특히, 값을 너무 작게 설정하면 응용서버가 빈번하게 재구동될 수 있으므로 주의한다. 또한, 이 파라미터는 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이고, 다음의 경우에 해당 응용 서버를 재구동한다.

LOG_DIR

LOG_DIR은 SQL 로그가 저장되는 디렉터리를 지정하는 파라미터로, 기본값은 log/broker/sql_log이다. SQL 로그가 기록되는 파일명은 broker_name_id.sql.log이다.

ERROR_LOG_DIR

ERROR_LOG_DIR은 브로커에 대한 에러 로그가 저장되는 디렉터리를 지정하는 파라미터로, 기본값은 log/broker/error_log이다. 브로커 에러 로그 파일명은 broker_ name_id.err이다.

SQL_LOG

SQL_LOG는 응용 클라이언트의 요청에 따라 응용서버(CAS)가 처리한 SQL 문에 대해 어떤 로그를 기록할 것인지 결정하는 파라미터로 기본값은 ON이다. 이 파라미터가 ON으로 설정되면, 모든 로그를 기록한다. SQL 로그가 기록되는 파일명은 broker_name_id.sql.log이며, 설치 디렉터리의 log/broker/sql_log 디렉터리에 생성된다. 파라미터 값은 다음과 같다.

TIME_TO_KILL

TIME_TO_KILL은 자동 추가된 응용서버 중 유휴 상태의 응용서버(CAS)를 제거하기 위한 기준 시간을 설정하는 파라미터로 기본값은 120(sec)이다. 유휴 상태란 작업이 없이 쉬고 있는 상태를 말한다. 이 상태가 TIME_TO_KILL 시간 이상 유지되면 응용서버(CAS) 의 제거/추가가 발생한다.

이 파라미터에 설정된 값은 자동 추가된 응용서버에만 적용되므로 AUTO_ADD_APPL_SERVER 파라미터가 ON인 경우에만 적용된다. TIME_TO_KILL 파라미터의 값을 너무 작게 설정하면 응용서버(CAS)의 제거/추가가 너무 빈번하게 발생할 수 있으므로 주의한다.

SESSION_TIMEOUT

SESSION_TIMEOUT은 해당 브로커의 세션을 종료하기 위한 타임아웃 값을 설정하는 파라미터로 기본값은 300(sec)이다. 이 파라미터의 설정값을 초과하는 시간 동안 작업 요청에 응답이 없는 경우 해당 세션은 종료된다.

KEEP_CONNECTION

KEEP_CONNECTION은 응용서버(CAS)와 응용 클라이언트 사이의 연결 방식을 지정하는 파라미터로 ON/OFF/AUTO 중 하나로 설정된다. 이 파라미터가 OFF로 설정되면 클라이언트는 트랜잭션 단위로 응용서버와 연결하고, ON으로 설정되면 커넥션 단위로 응용서버와 연결한다. 또한 AUTO로 설정되면 응용서버의 개수가 클라이언트 개수보다 많은 경우 커넥션 단위로 연결하고, 응용서버의 개수가 클라이언트의 개수보다 적은 경우 트랜잭션 단위로 연결한다. 기본값은 AUTO이다.

ACCESS LIST

ACCESS_LIST는 CUBRID 브로커로 접근을 허용하는 응용 클라이언트의 IP 주소 리스트를 저장할 파일 이름을 지정하는 파라미터이다. 210.192.33.*와 210.194.34.*인 IP 주소의 접근을 허용하려면 이를 임의의 파일(ip_lists.txt)에 저장하여 이 파라미터의 값으로 파일명을 설정한다.

ACCESS_LOG

ACCESS_LOG는 해당 브로커의 접속 로그를 저장할 것인지 지정하는 파라미터로 기본값은 ON이다. 브로커 접속 로그 파일명은 broker_name_id.access이고, LOG_DIR 파라미터에서 설정한 디렉터리에 저장된다.

LOG_BACKUP

LOG_BACKUP은 브로커의 접속 로그 파일과 에러 로그 파일을 백업할 것인지 지정하는 파라미터이다. 기본값은 OFF이며, 이 파라미터가 ON으로 설정되면 CUBRID 브로커가 종료될 때 접속 로그와 에러 로그의 백업을 수행한다. 이 때, 접속 로그의 백업 파일명은 broker_name_id. access가 되고, 에러 로그의 백업 파일명은 broker_ name_id.error가 된다.

SQL_LOG_MAX_SIZE

SQL_LOG_MAX_SIZE는 SQL 로그 파일의 최대 크기를 지정하는 파라미터로 기본값은 100,000(KB)이다. SQL_LOG 파라미터가 ON으로 설정된 경우에 생성되는 SQL 로그 파일이 이 파라미터의 설정값에 도달하면 broker_name_id.sql.log.bak이 생성된다.

APPL_SERVER_PORT

APPL_SERVER_PORT는 Windows 운영체제에서만 추가할 수 있는 파라미터로 응용 클라이언트와 통신하는 응용서버(CAS)의 통신 포트를 지정하는 파라미터이다. 기본값은 BROKER_PORT 파라미터 값에 1을 더한 값으로 설정되며, 응용서버의 최대 개수가 cubrid_broker_confMAX_NUM_APPL_SERVER 파라미터에 의해 제한되므로 설정할 수 있는 응용서버(CAS)의 통신 포트의 개수 역시 최대 MAX_NUM_APPL_SERVER 파라미터의 설정값으로 제한된다. Windows 운영체제에서 응용 클라이언트와 CUBRID 브로커 사이에 방화벽이 존재하는 경우에는 반드시 BROKER_PORT 및 APPL_SERVER_PORT에서 설정된 통신 포트를 열어야 한다.

APPL_SERVER

APPL_SERVER는 CUBRID 브로커가 생성하고 관리하는 응용서버의 종류를 지정하는 파라미터로 기본값은 CAS이다.

MAX_STRING_LENGTH

MAX_STRING_LENGTH는 bit, varbit, char, varchar, nchar, nchar varying인 데이터 타입에 대해서 최대 문자열 길이를 지정하는 파라미터이다. 기본값인 -1로 설정되면 데이터베이스에서 정의된 문자열 길이가 그대로 사용되고, 파라미터의 값이 100으로 설정되면 임의의 속성이 varchar(1000)으로 정의되었어도 100으로 정의된 것처럼 동작한다.

SOURCE_ENV

SOURCE_ENV는 브로커 각각에 대해 개별적으로 운영체제 환경 변수를 설정할 수 있는 파일을 정하는 파라미터로, 파일 확장자는 반드시 env여야 한다. cubrid.conf에서 지정하는 모든 파라미터는 환경 변수를 통해서도 설정할 수 있다. 예를 들어, cubrid.conf에서 lock_timeout_in_secs는 환경 변수 CUBRID_LOCK_TIMEOUT_IN_SECS로 지정할 수 있다. 또 다른 예로, broker1에서만 데이터 정의문 수행을 차단하려면 SOURCE_ENV에서 지정한 파일에 CUBRID_BLOCK_DDL_STATEMENT1로 설정하면 된다.

환경변수가 있을 경우, cubrid.conf보다 우선한다.

기본값은 cubrid.env이다.

STATEMENT_POOLING

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.

CCI_PCONNECT

CCI_PCONNECT는 CCI connection 풀링 기능의 사용 여부를 설정하는 파라미터로 기본값은 OFF이다. 이 파라미터는 CCI API 및 CCI API로 개발된 인터페이스(PHP, ODBC, OLE DB)를 사용하는 응용 프로그램에 영향을 끼치며, JDBC로 개발된 응용 프로그램에는 영향을 끼치지 않는다.

SELECT_AUTO_COMMIT

SELECT_AUTO_COMMIT은 CCI 또는 PHP에서 SELECT 문에 대한 자동 커밋 모드를 설정하는 파라미터로, 기본값은 OFF이다. 단, 자동 커밋은 prepared statement가 n개인 경우, 서버로부터 n개 질의문 전부에 대해 결과 셋을 가져오기(fetch)한 시점에만 자동 커밋이 수행되므로 주의한다. 아래는 SELECT_AUTO_COMMIT의 값이 ON일 때, 상황에 따른 자동 커밋 여부에 관한 예제이며, 보다 상세한 설명은 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

LONG_QUERY_TIME

LONG_QUERY_TIME은 장기 실행 질의(long-duration query)로 판단될 질의 실행 시간을 설정하는 파라미터이다. 기본값은 60(초)이고 소수점을 사용하여 밀리초(msec) 단위의 값을 설정할 수 있다. 예를 들어 500밀리초로 설정하려면 값을 0.5로 설정한다. 파라미터 값이 0으로 설정되면 장기 실행 질의를 판단하지 않는다.

LONG_TRANSACTION_TIME

LONG_TRANSACTION_TIME은 장기 실행 트랜잭션(long-duration transaction)으로 판단될 트랜잭션의 실행 시간을 설정하는 파라미터이다. 기본값은 60(초)이고 소수점을 사용하여 밀리초(msec) 단위의 값을 설정할 수 있다. 예를 들어 500밀리초로 설정하려면 값을 0.5로 설정한다. 파라미터 값이 0으로 설정되면 장기 실행 트랜잭션을 판단하지 않는다.

CCI_DEFAULT_AUTOCOMMIT

CCI_DEFAULT_AUTOCOMMIT은 CCI API로 구현된 프로그램의 자동 커밋 여부를 설정하는 파라미터로 기본값은 OFF이다.

이 파라미터는 CCI API 및 CCI API로 개발된 인터페이스(PHP, ODBC, OLE DB)를 사용하는 응용 프로그램에 영향을 끼치며, JDBC로 개발된 응용 프로그램에는 영향을 끼치지 않는다.

MAX_PREPARED_STMT_COUNT

MAX_PREPARED_STMT_COUNT은 사용자(응용 프로그램) 접속 당 허용하는 prepared statement의 개수를 제한하는 파라미터이다. 기본값은 2000이며 최소값은 1이다. 이 파라미터 값을 사용자가 적절히 지정함으로써, 응용 프로그램의 작성 실수로 인해 시스템이 허용하는 메모리를 초과하여 prepared statement 문을 생성하는 것을 사전에 방지할 수 있다.

ACCESS_CONTROL

ACCESS_CONTROL은 브로커에 접속하는 응용 클라이언트를 제한하기 위한 파라미터이다. 기본값은 OFF이다. 자세한 내용은 브로커 접속 제한을 참고한다.

ACCESS_CONTROL_FILE

ACCESS_CONTROL_FILE은 브로커에 접속을 허용하는 데이터베이스 이름, 데이터베이스 사용자 ID, IP 목록을 저장한 파일 이름을 지정하는 파라미터이다. 자세한 내용은 브로커 접속 제한을 참고한다.