:meta-keywords: cubrid configure, cubrid conf, cubrid parameters, cubrid settings, cubrid.conf, cubrid default parameters :meta-description: How to configure CUBRID database behavior. Set system parameters for Connection, Memory, Disk, Concurrency/Lock, Logging, Transaction Processing, Query Execution, Utilities and High Availability. *********** 시스템 설정 *********** 이 장에서는 시스템의 전체적인 성능과 동작을 결정하는 시스템 파라미터의 설정 정보에 대해 설명하며, 데이터베이스 서버 및 브로커에 적용할 설정 파일의 사용법과 개별 파라미터의 의미에 대해 설명한다. .. FIXME: CUBRID 매니저 서버 환경 설정과 관련해서는 `CUBRID Manager Manual `_ 을 참고한다. 이 장에서 설명하는 주요 내용은 다음과 같다. * 데이터베이스 서버 설정 * 브로커 설정 데이터베이스 서버 설정 ====================== .. _scope-server-conf: 데이터베이스 서버 설정이 미치는 범위 ------------------------------------ CUBRID는 데이터베이스 서버, 브로커, CUBRID 매니저로 구성되며, 각 구성요소에 대한 설정 파일이 존재한다. 데이터베이스 서버의 시스템 파라미터 설정 파일은 **cubrid.conf**\ 이며 **$CUBRID/conf** 디렉터리에 위치한다. **cubrid.conf** 에 설정되는 시스템 파라미터는 데이터베이스 시스템의 전체적인 성능과 동작에 영향을 준다. 따라서, 데이터베이스 서버 설정을 이해하는 작업은 매우 중요하다. CUBRID 데이터베이스 서버는 클라이언트/서버 구조로 구성된다. 구체적으로 서버 라이브러리와 링크되어 있는 데이터베이스 서버 프로세스와 클라이언트 라이브러리와 링크되어 있는 브로커 프로세스로 나뉜다. 서버 프로세스는 데이터베이스 저장 구조를 관리하고 동시성과 트랜잭션 기능을 제공하며, 클라이언트 프로세스는 질의 실행을 위한 준비 단계와 객체 관리 및 스키마 관리 기능을 수행한다. **cubrid.conf** 파일에서 설정할 수 있는 데이터베이스 서버의 시스템 파라미터는 적용되는 범위에 따라 클라이언트 파라미터, 서버 파라미터, 클라이언트/서버 파라미터로 구분할 수 있다. 클라이언트 파라미터는 브로커와 같은 클라이언트 프로세스에만 적용되는 파라미터이며, 서버 파라미터는 서버 프로세스의 동작에 영향을 주는 파라미터이다. 클라이언트/서버 파라미터는 서버와 클라이언트에 적용된다. .. note:: **cubrid.conf 파일의 위치와 적용** **cubrid.conf** 파일은 **$CUBRID/conf** 디렉터리에 위치하며, 데이터베이스 별 설정은 **cubrid.conf** 파일 내에서 섹션으로 구분한다. 데이터베이스 서버 설정값 변경 ----------------------------- 환경 설정 파일 편집 ^^^^^^^^^^^^^^^^^^^ **$CUBRID/conf** 디렉터리에 있는 시스템 파라미터 설정 파일( **cubrid.conf** )을 직접 편집하여 시스템 파라미터를 추가 및 삭제할 수 있으며, 파라미터의 설정값을 변경할 수 있다. 설정 파일에서 파라미터를 설정할 때 파라미터 구문 규칙은 다음과 같다. * 파라미터 이름은 대/소문자를 구분하지 않는다. * 파라미터 이름과 설정값은 동일한 라인에 입력되어야 한다. * 파라미터 값을 설정하기 위해 등호 기호(=)를 사용하며, 등호 기호의 양 옆에는 공백 문자를 사용할 수 있다. * 파라미터 값이 문자열인 경우 따옴표 없이 문자열만 입력한다. 다만, 해당 문자열에 공백 문자가 포함된 경우에는 따옴표를 사용한다. SQL 문을 사용 ^^^^^^^^^^^^^ SQL 문을 이용하여 CSQL 인터프리터나 CUBRID 매니저의 질의 편집기에서 시스템 파라미터의 값을 설정할 수 있다. 단, 갱신할 수 있는 파라미터는 한정되어 있으므로 주의한다. 갱신할 수 있는 파라미터는 :ref:`cubrid-conf`\ 를 참고한다. :: SET SYSTEM PARAMETERS 'parameter_name=value [{; name=value}...]' *parameter_name* 은 설정값 변경이 가능한 클라이언트 파라미터 이름이고, *value* 는 해당 파라미터의 값을 의미한다. 세미콜론(;)으로 구분하여 여러 개의 파라미터 값을 변경할 수 있다. 다음은 인덱스 스캔 작업의 결과를 OID 순으로 가져오고, CSQL 인터프리터에서 히스토리 내역으로 저장하는 질의 개수를 70개로 설정하는 예제이다. .. code-block:: sql SET SYSTEM PARAMETERS 'index_scan_in_oid_order=1; csql_history_num=70'; *value* 에 **DEFAULT** 값을 주면 **call_stack_dump_activation_list** 파라미터를 제외하고 해당 파라미터를 기본값으로 재설정한다. .. code-block:: sql SET SYSTEM PARAMETERS 'lock_timeout=DEFAULT'; CSQL 인터프리터의 세션 명령어 사용 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CSQL 인터프리터 내에서 세션 명령어(**;SEt**)를 이용하여 시스템 파라미터의 값을 설정할 수 있다. 단, 갱신할 수 있는 파라미터는 한정되어 있으므로 주의한다. 갱신할 수 있는 파라미터는 :ref:`cubrid-conf`\ 를 참고한다. 다음은 데이터 정의문 수행이 허용되지 않도록 **block_ddl_statement** 파라미터를 1로 설정하는 예제이다. :: csql> ;se block_ddl_statement=1 === Set Param Input === block_ddl_statement=1 .. _cubrid-conf: cubrid.conf 설정 파일과 기본 제공 파라미터 ------------------------------------------ CUBRID는 데이터베이스 서버, 브로커, CUBRID 매니저로 구성된다. 각 구성 요소를 수행하기 위한 설정 파일 이름은 다음과 같고, 모두 **$CUBRID/conf** 디렉터리에 위치한다. * 데이터베이스 서버 설정 파일 : **cubrid.conf** * 브로커 설정 파일 : **cubrid_broker.conf** * CUBRID 매니저 서버 설정 파일 : **cm.conf** **cubrid.conf** 파일은 CUBRID 데이터베이스 서버에 대한 시스템 파라미터를 지정하는 설정 파일로 데이터베이스 시스템의 전체적인 성능과 동작을 결정한다. **cubrid.conf** 파일은 시스템 설치에 필요한 몇 가지 중요한 파라미터가 기본으로 설정된 상태로 제공된다. 데이터베이스 서버 시스템 파라미터 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 다음은 **cubrid.conf** 설정 파일에 사용 가능한 데이터베이스 서버 시스템 파라미터이다. 아래 표에서 "적용 구분"의 "클라이언트 파라미터"는 브로커 응용서버(CAS), CSQL, **cubrid** 유틸리티에 적용되는 파라미터를 의미하며, "서버 파라미터"는 DB 서버(cub_server 프로세스)에 적용되는 파라미터를 의미한다. 자세한 의미는 :ref:`scope-server-conf` 를 참조한다. **SET SYSTEM PARAMETERS** 구문이나 CSQL 인터프리터의 세션 명령인 **;set**\ 을 통해 DB 구동 중 동적으로 설정값 변경이 가능한 파라미터를 변경할 수 있다. DB 사용자의 권한이 DBA인 경우 적용 구분에 상관없이 파라미터 값의 변경이 가능하며, DBA가 아닌 경우 "세션" 파라미터(아래 표에서 "세션" 항목의 값이 O인 파라미터)의 값만 변경이 가능하다. 아래 표에서 "적용 구분" 항목이 "서버"인 파라미터는 cub_server 프로세스에 영향을 끼치며, "클라이언트"인 파라미터는 CAS, CSQL 또는 클라이언트/서버 모드(--CS-mode)로 실행하는 "cubrid" 유틸리티에 영향을 끼친다. "클라이언트/서버"인 파라미터는 cub_server 프로세스와 CAS, CSQL, "cubrid" 유틸리티에 모두 영향을 끼친다. 아래 표에는 "동적 변경"과 "세션" 파라미터 여부가 표시되어 있다. "동적 변경"이 "가능"한 파라미터는 "적용 구분"과 "세션" 파라미터 여부에 따라 적용 범위가 다음과 같이 달라진다. * "동적 변경"이 "가능"한 파라미터 중 "적용 구분"이 "서버"이면 변경된 파라미터 값이 DB 서버에 적용되어, 이후에 접속하는 응용 프로그램들은 변경된 값을 사용하며, DB를 재구동하기 전까지는 변경된 값을 유지한다. * "동적 변경"이 "가능"한 파라미터 중 "적용 구분"이 "클라이언트"이면 "세션" 파라미터에 해당하며, DB 세션 당 변경된 값이 유지된다. 즉, 변경을 요청한 응용 프로그램에만 변경된 값이 적용된다. 예를 들어, **block_ddl_statement** 파라미터의 값이 **yes**\로 변경되면 변경을 요청한 응용 프로그램에서만 DDL 문을 사용할 수 없게 된다. * "동적 변경"이 "가능"한 파라미터 중 "적용 구분"이 "클라이언트/서버"이고 * "세션" 파라미터에 해당하면 DB 세션 당 변경된 값이 유지된다. 즉, 변경을 요청한 응용 프로그램에만 변경된 값이 적용되며, 서버에는 영향을 미치지 않는다. 예를 들어, **add_column_update_hard_default** 파라미터의 값이 **yes**\로 변경되면, 변경을 요청한 응용 프로그램만이 NOT NULL 제약조건으로 새로 추가한 칼럼이 고정 기본값(hard default)을 갖게 한다. * "세션" 파라미터에 해당하지 않으면 "클라이언트" 단과 "서버" 단의 값이 변경된다. 예를 들어, **error_log_level** 파라미터는 "서버" 단과 "클라이언트" 단에 각각 적용되는 파라미터로, 이 값이 "ERROR"에서 "WARNING"으로 변경되면 "서버"(cub_server 프로세스)와 해당 변경을 요청한 "클라이언트"(CAS 또는 CSQL)에만 WARNING이 적용되고, 나머지 "클라이언트"에는 "ERROR"가 유지된다. .. note:: 파라미터의 값을 영구히 변경하려면 cubrid.conf의 설정값을 변경한 후 DB 서버와 브로커 모두 재구동해야 한다. +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | 용도 구분 | 파라미터 이름 | 적용 구분 | 세션 | 타입 | 기본값 | 동적 변경 | +===============================+=====================================+=========================+=========+==========+================================+=================+ | :ref:`connection-parameters` | cubrid_port_id | 클라이언트 | | int | 1,523 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | check_peer_alive | 클라이언트/서버 | O | string | both | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | db_hosts | 클라이언트 | O | string | NULL | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_clients | 서버 | | int | 100 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | tcp_keepalive | 클라이언트/서버 | | bool | yes | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`memory-parameters` | data_buffer_size | 서버 | | byte | 32,768 * | | | | | | | | :ref:`db_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | index_scan_oid_buffer_size | 서버 | | byte | 4 * | | | | | | | | :ref:`db_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_agg_hash_size | 서버 | | byte | 2,097,152(2M) | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sort_buffer_size | 서버 | | byte | 128 * | | | | | | | | :ref:`db_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | temp_file_memory_size_in_pages | 서버 | | int | 4 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | thread_stacksize | 서버 | | byte | 1,048,576 | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`disk-parameters` | db_volume_size | 서버 | | byte | 512M | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | dont_reuse_heap_file | 서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | log_volume_size | 서버 | | byte | 512M | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | temp_file_max_size_in_pages | 서버 | | int | -1 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | temp_volume_path | 서버 | | string | NULL | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | unfill_factor | 서버 | | float | 0.1 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | volume_extension_path | 서버 | | string | NULL | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`error-parameters` | call_stack_dump_activation_list | 클라이언트/서버 | | string | DEFAULT | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | call_stack_dump_deactivation_list | 클라이언트/서버 | | string | NULL | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | call_stack_dump_on_error | 클라이언트/서버 | | bool | no | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | error_log | 클라이언트/서버 | | string | cub_client.err, cub_server.err | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | error_log_level | 클라이언트/서버 | | string | NOTIFICATION | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | error_log_warning | 클라이언트/서버 | | bool | no | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | error_log_size | 클라이언트/서버 | | int | 512M | DBA만 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`lock-parameters` | deadlock_detection_interval_in_secs | 서버 | | float | 1.0 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | isolation_level | 클라이언트 | O | int | 4 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | lock_escalation | 서버 | | int | 100,000 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | lock_timeout | 클라이언트 | O | msec | -1 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | rollback_on_lock_escalation | 서버 | | bool | no | DBA만 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`logging-parameters` | adaptive_flush_control | 서버 | | bool | yes | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | background_archiving | 서버 | | bool | yes | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | checkpoint_every_size | 서버 | | byte | 100,000 * | | | | | | | | :ref:`log_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | checkpoint_interval | 서버 | | msec | 6min | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | checkpoint_sleep_msecs | 서버 | | msec | 1 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | force_remove_log_archives | 서버 | | bool | yes | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | log_buffer_size | 서버 | | byte | 16k * | | | | | | | | :ref:`log_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | log_max_archives | 서버 | | int | INT_MAX | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | log_trace_flush_time | 서버 | | msec | 0 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_flush_size_per_second | 서버 | | byte | 10,000 * | DBA만 가능 | | | | | | | :ref:`db_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | remove_log_archive_interval_in_secs | 서버 | | sec | 0 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sync_on_flush_size | 서버 | | byte | 200 * | DBA만 가능 | | | | | | | :ref:`db_page_size ` | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`transaction-parameters` | async_commit | 서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | group_commit_interval_in_msecs | 서버 | | msec | 0 | DBA만 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`stmt-type-parameters` | add_column_update_hard_default | 클라이언트/서버 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | alter_table_change_type_strict | 클라이언트/서버 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | ansi_quotes | 클라이언트 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | block_ddl_statement | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | block_nowhere_statement | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | compat_numeric_division_scale | 클라이언트/서버 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | cte_max_recursions | 클라이언트/서버 | O | int | 2000 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | default_week_format | 클라이언트/서버 | O | int | 0 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | group_concat_max_len | 서버 | O | byte | 1,024 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | intl_check_input_string | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | intl_collation | 클라이언트 | O | string | | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | intl_date_lang | 클라이언트 | O | string | | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | intl_number_lang | 클라이언트 | O | string | | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | no_backslash_escapes | 클라이언트 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | only_full_group_by | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | oracle_style_empty_string | 클라이언트/서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | pipes_as_concat | 클라이언트 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | plus_as_concat | 클라이언트 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | require_like_escape_character | 클라이언트 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | return_null_on_function_errors | 클라이언트/서버 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | string_max_size_bytes | 클라이언트/서버 | O | byte | 1,048,576 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | unicode_input_normalization | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | unicode_output_normalization | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | update_use_attribute_references | 클라이언트 | O | bool | no | 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`timezone-parameters` | server_timezone | 서버 | | string | OS의 타임존 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | timezone | 클라이언트/서버 | O | string | server_timezone의 값 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | tz_leap_second_support | 서버 | | bool | no | 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`plan-cache-parameters` | max_plan_cache_entries | 클라이언트/서버 | | int | 1,000 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_plan_cache_clones | 서버 | | int | 1,000 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | xasl_cache_time_threshold_in_minutes| 서버 | | int | 360 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_filter_pred_cache_entries | 클라이언트/서버 | | int | 1,000 | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`utility-parameters` | backup_volume_max_size_bytes | 서버 | | byte | 0 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | communication_histogram | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | compactdb_page_reclaim_only | 서버 | | int | 0 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | csql_history_num | 클라이언트 | O | int | 50 | 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`ha-parameters` | ha_mode | 서버 | | string | off | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`other-parameters` | access_ip_control | 서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | access_ip_control_file | 서버 | | string | | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | agg_hash_respect_order | 클라이언트 | O | bool | yes | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | auto_restart_server | 서버 | O | bool | yes | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | enable_string_compression | 클라이언트/서버 | O | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | index_scan_in_oid_order | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | index_unfill_factor | 서버 | | float | 0.05 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | java_stored_procedure | 서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | multi_range_optimization_limit | 서버 | O | int | 100 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | optimizer_enable_merge_join | 클라이언트 | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | pthread_scope_process | 서버 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | server | 서버 | | string | | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | service | 서버 | | string | | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | session_state_timeout | 서버 | | sec | 21,600 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sort_limit_max_count | 클라이언트 | O | int | 1,000 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sql_trace_slow | 서버 | O | msec | -1 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sql_trace_execution_plan | 서버 | O | bool | no | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | use_orderby_sort_limit | 서버 | O | bool | yes | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | vacuum_prefetch_log_mode | 서버 | | int | 1 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | vacuum_prefetch_log_buffer_size | 서버 | | int | 3200 * | DBA만 가능 | | | | | | | :ref:`log_page_size ` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | data_buffer_neighbor_flush_pages | 서버 | | int | 8 | DBA만 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | data_buffer_neighbor_flush_nondirty | 서버 | | bool | no | DBA만 가능 | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ .. _lpg: * **log_page_size**: :ref:`데이터베이스 생성` 시 **--log-page-size** 옵션으로 지정한 로그 볼륨 페이지 크기. 기본값: 16KB. 관련 파라미터의 설정 값은 페이지 단위로 버림된다. 예를 들어 checkpoint_every_size 의 값은 16KB로 나누어 소수점 이하를 버림한 값에 16KB를 곱한 값이 된다. .. _dpg: * **db_page_size**: :ref:`데이터베이스 생성` 시 **--db-page-size** 옵션으로 지정한 DB 볼륨 페이지 크기. 기본값: 16KB. 관련 파라미터의 설정 값은 페이지 단위로 버림된다. 예를 들어 data_buffer_size 의 값은 16KB로 나누어 소수점 이하를 버림한 값에 16KB를 곱한 값이 된다. 파라미터의 섹션별 분류 ^^^^^^^^^^^^^^^^^^^^^^ **cubrid.conf**\ 에 지정된 파라미터는 다음과 같이 네 가지 섹션으로 제공된다. * CUBRID 서비스를 시작할 때 사용 : [service] 섹션 * 전체 데이터베이스에 공통으로 적용 : [common] 섹션 * 각 데이터베이스에 개별적으로 적용 : [@<*database*>] 섹션 * cubrid 유틸리티가 독립 모드(stand-alone, --SA-mode)로 구동할 때만 사용 : [standalone] 섹션 여기서 <*database*>는 파라미터를 개별적으로 적용할 데이터베이스 이름이며, [common]에 설정된 파라미터가 [@<*database*>]에 설정된 파라미터와 동일한 경우 [@<*database*>]에 설정된 파라미터가 최종 적용된다. :: ..... [common] ..... sort_buffer_size=2M ..... [standalone] sort_buffer_size=256M ..... [standalone] 섹션에 정의된 설정은 "cubrid"로 시작하는 cubrid 유틸리티들이 독립 모드로 구동할 때만 사용된다. 예를 들어, 위와 같이 설정한 상태에서 --CS-mode(기본값)으로 DB를 구동(cubrid database start db_name)하면 "sort_buffer_size=2M"가 적용된다. 하지만 DB를 정지하고 "cubrid loaddb --SA-mode"를 실행할 때는 "sort_buffer_size=256M"가 적용된다. "cubrid loaddb --SA-mode"를 실행할 때 인덱스 생성 과정에서 정렬 버퍼(sort buffer)를 더 많이 사용할 것으로 예상되므로 이를 늘려주는 것이 "loaddb" 수행 성능에 도움이 된다. 기본 제공 파라미터 ^^^^^^^^^^^^^^^^^^ CUBRID 설치 시 생성되는 기본 데이터베이스 환경 설정 파일(**cubrid.conf**)에는 데이터베이스 서버 파라미터 중 반드시 변경해야 할 일부 파라미터가 기본적으로 포함된다. 기본으로 포함되지 않는 파라미터의 설정값을 변경하기 원할 경우 직접 추가/편집해서 사용하면 된다. 다음은 **cubrid.conf** 파일 내용이다. :: # Copyright (C) 2008 Search Solution Corporation. All rights reserved by Search Solution. # # $Id$ # # cubrid.conf# # For complete information on parameters, see the CUBRID # Database Administration Guide chapter on System Parameters # Service section - a section for 'cubrid service' command [service] # The list of processes to be started automatically by 'cubrid service start' command # Any combinations are available with server, broker and manager. service=server,broker,manager # The list of database servers in all by 'cubrid service start' command. # This property is effective only when the above 'service' property contains 'server' keyword. #server=demodb,testdb # Common section - properties for all databases # This section will be applied before other database specific sections. [common] # Read the manual for detailed description of system parameters # Manual > System Configuration > Database Server Configuration > Default Parameters # Size of data buffer are using K, M, G, T unit data_buffer_size=512M # Size of log buffer are using K, M, G, T unit log_buffer_size=256M # Size of sort buffer are using K, M, G, T unit # The sort buffer should be allocated per thread. # So, the max size of the sort buffer is sort_buffer_size * max_clients. sort_buffer_size=2M # The maximum number of concurrent client connections the server will accept. # This value also means the total # of concurrent transactions. max_clients=100 # TCP port id for the CUBRID programs (used by all clients). cubrid_port_id=1523 *testdb* 만 data_buffer_size를 128M로, max_clients를 10으로 설정하고 싶은 경우 다음과 같이 설정한다. :: [service] service=server,broker,manager [common] data_buffer_size=512M log_buffer_size=256M sort_buffer_size=2M max_clients=100 # TCP port id for the CUBRID programs (used by all clients). cubrid_port_id=1523 [@testdb] data_buffer_size=128M max_clients=10 .. _connection-parameters: 접속 관련 파라미터 ------------------ 다음은 데이터베이스 서버와 관련된 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다. +--------------------+----------+-------------------+---------+---------+ | 파라미터 이름 | 타입 | 기본값 | 최소값 | 최대값 | +====================+==========+===================+=========+=========+ | cubrid_port_id | int | 1,523 | 1 | | +--------------------+----------+-------------------+---------+---------+ | check_peer_alive | string | both | | | +--------------------+----------+-------------------+---------+---------+ | db_hosts | string | NULL | | | +--------------------+----------+-------------------+---------+---------+ | max_clients | int | 100 | 10 | 2,000 | +--------------------+----------+-------------------+---------+---------+ | tcp_keepalive | bool | yes | | | +--------------------+----------+-------------------+---------+---------+ **cubrid_port_id** **cubrid_port_id**\ 는 마스터 프로세스가 사용하는 포트를 설정하기 위한 파라미터로 기본값은 **1,523**\ 이다. CUBRID를 설치한 서버에서 이미 1,523 포트를 사용하고 있거나, 방화벽에 의해 1523 포트가 차단된 경우에는 마스터 프로세스가 정상적으로 구동할 수 없으므로, 마스터 서버와 연결할 수 없다는 에러 메시지가 나타날 수 있다. 이와 같이 포트 충돌이 발생하는 경우, 관리자는 서버 환경을 고려하여 **cubrid_port_id** 의 설정값을 변경해야 한다. .. _check_peer_alive: **check_peer_alive** **check_peer_alive**\ 는 클라이언트 프로세스와 서버 프로세스가 정상 동작하는지 각각 확인하는 과정의 수행 여부를 결정하는 파라미터이다. 기본값은 **both**\ 이다. 서버 프로세스와 접속하는 클라이언트 프로세스에는 브로커 응용 서버(cub_cas) 프로세스, 복제 로그 반영 프로세스(copylogdb), 복제 로그 복사 프로세스(applylogdb), CSQL 인터프리터(csql) 등이 있다. 서버 프로세스와 클라이언트 프로세스는 접속이 이루어진 후 네트워크를 통해 데이터를 기다리는 중 오랫동안(예: 5초 이상) 응답을 받지 못하면 설정에 따라 상대방이 정상 동작하는지 확인하는 과정을 거친다. 서로 확인하는 과정에서 정상 동작하지 않는다고 판단되면 연결된 접속을 강제 종료한다. 값의 종류 및 동작 방식은 다음과 같다. * **both**: 서버 프로세스는 클라이언트 프로세스의 ECHO(7) 포트에 주기적으로 접속하여 클라이언트 프로세스가 정상 동작하는지 확인하고, 클라이언트 프로세스는 서버 프로세스의 ECHO(7) 포트에 주기적으로 접속하여 서버 프로세스가 정상 동작하는지 확인한다(기본값). * **server_only**: 서버 프로세스만 클라이언트 프로세스가 정상 동작하는지 확인한다. * **client_only**: 클라이언트 프로세스만 서버 프로세스가 정상 동작하는지 확인한다. * **none**: 클라이언트 프로세스와 서버 프로세스 둘 다 상대방이 정상 동작하는지 확인하지 않는다. 특히, ECHO(7) 포트가 방화벽(firewall) 설정으로 막혀있으면 서버 프로세스 또는 클라이언트 프로세스가 각각 서로의 상태를 확인할 때 상대방 프로세스가 종료된 것으로 오인할 수 있으므로, none으로 설정하여 이 문제를 회피해야 한다. **db_hosts** **db_hosts**\ 는 클라이언트에서 연결할 수 있는 데이터베이스 서버 호스트의 목록 및 연결 순서를 지정하기 위한 파라미터이다. 서버 호스트 목록은 한 개 이상의 서버 호스트 이름을 나열하며, 각 호스트는 이름 사이에 공백 또는 콜론(:) 기호를 사용하여 구분한다. 이 때, 중복되거나 존재하지 않는 호스트 이름은 무시된다. 다음은 **db_hosts** 파라미터의 설정값을 보여주는 예제로 **host1**, **host2**, **host3** 의 순서대로 연결이 시도된다. :: db_hosts="hosts1:hosts2:hosts3" 한편, 클라이언트는 서버 연결을 위하여 데이터베이스 위치 정보 파일(**databases.txt**)을 참조하여 지정된 서버 호스트에 1차적으로 연결을 시도한다. 연결이 실패하면 데이터베이스 설정 파일(**cubrid.conf**)의 **db_hosts** 파라미터의 설정값을 참조하여 2차적으로 지정된 서버 호스트 중 첫 번째 서버 호스트에 연결을 시도한다. .. _max_clients: **max_clients** **max_clients**\ 는 데이터베이스 서버에 동시 연결을 허용하는 클라이언트(일반적으로 브로커 용용 서버(CAS))의 최대 개수를 지정하기 위한 파라미터이다. 즉, **max_clients** 파라미터는 데이터베이스 서버 프로세스 하나 당 동시에 접속할 수 있는 클라이언트의 최대 개수를 의미한다. 이 파라미터의 기본값은 **100**\ 이다. CUBRID 환경에서 동시 사용자 수를 증가시키기 위해서는 질의 성능을 고려하여 **max_clients** 파라미터(**cubrid.conf**) 및 :ref:`MAX_NUM_APPL_SERVER ` 파라미터(**cubrid_broker.conf**)를 적절한 값으로 설정해야 한다. 즉, **max_clients** 파라미터를 통해 데이터베이스 서버가 허용하는 동시 접속 개수를 설정하고, **MAX_NUM_APPL_SERVER** 파라미터를 통해 해당 브로커가 허용하는 동시 접속 개수를 설정한다. 예를 들어, **cubrid_broker.conf** 파일에서 [%query_editor]의 **MAX_NUM_APPL_SERVER** 값이 50이고 [%BROKER1]의 **MAX_NUM_APPL_SERVER** 값이 50인 브로커 노드 2개가 하나의 데이터베이스 서버에 접속하는 경우, 데이터베이스 서버가 허용하는 동시 접속 개수인 **max_clients** 의 값은 다음과 같이 설정할 수 있다. * (각 브로커 노드 당 최대 100개) * (브로커 노드 2개) + (CSQL 인터프리터의 데이터베이스 서버 접속, HA 로그 복사 프로세스와 같은 CUBRID 내부 프로세스의 데이터베이스 서버 접속 등에 대한 여유분 10개) = 210 특히, HA 환경에서는 failover 등으로 인해 여러 브로커 노드 접속이 하나의 데이터베이스 서버에 집중될 수 있으므로, 같은 데이터베이스에 접속하는 모든 브로커 노드의 **MAX_NUM_APPL_SERVER** 값을 합한 값 보다 크게 설정해야 한다. 클라이언트의 데이터베이스 접속 여부에 관계 없이 **max_clients**\ 의 개수를 크게 설정할수록 메모리 사용량이 증가하므로 주의한다. .. note:: Linux 시스템에서 max_clients 파라미터는 "ulimit -n" 명령과 관련이 있는데, "ulimit -n" 명령은 프로세스 하나가 사용할 수 있는 file descriptor의 최대 개수를 지정한다. file descriptor는 파일 뿐 아니라 네트워크 소켓도 포함하므로, "ulimit -n"의 개수는 max_clients의 개수보다 크게 설정해야 한다. **tcp_keepalive** **tcp_keepalive**\ 는 TCP 네트워크 프로토콜에 SO_KEEPALIVE 옵션을 적용할지 여부를 지정하는 파라미터로, 기본값은 **yes*\ 이다. 이 값이 **no**\ 이면 마스터 노드와 슬레이브 노드 간 방화벽이 설정되어 있는 환경에서 장시간 동안 트랜잭션 로그가 복사되지 않을 때 DB 서버 쪽 연결이 종료되는 현상이 발생할 수 있다. .. _memory-parameters: 메모리 관련 파라미터 -------------------- 다음은 데이터베이스 서버 또는 클라이언트에서 사용하는 메모리와 관련된 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다. +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | 파라미터 이름 | 타입 | 기본값 | 최소값 | 최대값 | +================================+========+===========================+===========================+===========================+ | data_buffer_size | byte | 32,768 * | 1,024 * | 2G(32비트), | | | | :ref:`db_page_size ` | :ref:`db_page_size ` | INT_MAX * | | | | | | :ref:`db_page_size ` | | | | | | (64비트) | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | index_scan_oid_buffer_size | byte | 4 * | 0.05 * | 16 * | | | | :ref:`db_page_size ` | :ref:`db_page_size ` | :ref:`db_page_size ` | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | max_agg_hash_size | byte | 2,097,152(2M) | 32,768(32K) | 134,217,728(128MB) | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | sort_buffer_size | byte | 128 * | 1 * | 2G(32비트), | | | | :ref:`db_page_size ` | :ref:`db_page_size ` | INT_MAX * | | | | | | :ref:`db_page_size ` | | | | | | (64비트) | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | temp_file_memory_size_in_pages | int | 4 | 0 | 20 | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | thread_stacksize | byte | 1,048,576 | 65,536 | | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ **data_buffer_size** **data_buffer_size**\ 는 데이터베이스 서버가 메모리 내에 캐시하는 데이터 버퍼의 크기를 설정하기 위한 파라미터이다. 값 뒤에 B, K, M, G, T로 단위를 붙일 수 있으며, 각각 Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 기본값은 32,768 * :ref:`db_page_size ` (db_page_size가 16K일 때 **512M**) 이고, 최소값은 1,024 * :ref:`db_page_size ` (db_page_size가 16K일 때 **16M**)이다. CUBRID 64비트 버전에서는 최대값이 INT_MAX * :ref:`db_page_size `\ 이다. CUBRID 32비트 버전에서는 최대값이 **2G**\ 임에 주의한다. **data_buffer_size** 파라미터의 값이 클수록 버퍼에 캐시되는 데이터 페이지가 많아지므로 디스크 I/O 비용을 줄일 수 있다는 장점이 있다. 반면, 이 파라미터의 값을 너무 크게 설정하면 과도하게 시스템 메모리가 점유되므로 운영체제에 의해 버퍼 풀이 스와핑(swapping)되는 현상이 발생할 수 있다. **data_buffer_size** 파라미터는 필요한 메모리 크기가 시스템 메모리의 2/3 이내가 되도록 설정할 것을 권장한다. * 필요한 메모리 크기 = 데이터 버퍼 크기(**data_buffer_size**) **index_scan_oid_buffer_size** **index_scan_oid_buffer_size**\ 는 인덱스 스캔을 수행할 때 OID 리스트의 임시 저장을 위한 버퍼의 크기를 설정하기 위한 파라미터이다. K 단위를 설정할 수 있으며, KB(kilobytes)를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 기본값은 4 * :ref:`db_page_size ` (db_page_size가 16K일 때 **64K**)이다. 최소값은 0.05 * :ref:`db_page_size ` (db_page_size가 16K일 때 약 **1K**)이고, 최대값은 16 * :ref:`db_page_size ` (db_page_size가 16K일 때 **256K**)이다. **index_scan_oid_buffer_size** 파라미터 값과 데이터베이스 생성 시 설정한 단위 페이지의 크기에 비례하여 OID 버퍼의 크기가 결정되고, 이러한 OID버퍼의 크기가 클수록 인덱스 스캔 비용이 증가하는 경향을 보인다. 이를 고려하여 **index_scan_oid_buffer_size** 파라미터 값을 조정할 수 있다. .. _max_agg_hash_size: **max_agg_hash_size** **max_agg_hash_size**\ 는 집계를 포함하는 질의에서 투플 그룹을 해싱하기 위해 할당한 트랜잭션 당 최대 메모리 크기를 설정하는 파라미터이다. 기본값은 **2,097,152**\ (2M), 최소값은 32,768(32K), 그리고 최대값은 134,217,728(128MB)이다. :ref:`NO_HASH_AGGREGATE ` 힌트가 명시되면, 집계 작업 시 해싱 방식이 사용되지 않을 것이다. :ref:`agg_hash_respect_order `\ 를 참고한다. **sort_buffer_size** **sort_buffer_size**\ 는 정렬을 수행하는 질의에서 사용되는 버퍼의 크기를 설정하기 위한 파라미터이다. 서버는 각 클라이언트의 정렬 요청마다 하나의 정렬 버퍼를 할당하며, 정렬을 완료한 후에는 할당되었던 버퍼 메모리를 해제한다. 정렬을 수행하는 질의로는 SELECT 정렬 질의 뿐만 아니라 인덱스 생성 질의도 포함된다. 값 뒤에 B, K, M, G, T로 단위를 붙일 수 있으며, 각각 Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 기본값은 128 * :ref:`db_page_size ` (db_page_size가 16K일 때 **2M**)이고, 최소값은 1 * :ref:`db_page_size ` (db_page_size가 16K일 때 **16K**)이다. **temp_file_memory_size_in_pages** **temp_file_memory_size_in_pages**\ 는 질의에 관한 임시 결과를 캐시하는 버퍼 페이지 개수를 설정하기 위한 파라미터로 기본값은 **4**\ 이며, 최대값은 20까지 허용된다. * 필요한 메모리 크기 = 임시 메모리 버퍼 페이지 수(**temp_file_memory_size_in_pages**) \* 데이터베이스 페이지 크기(page size) * 임시 메모리 버퍼 페이지 수 = **temp_file_memory_size_in_pages** 파라미터 설정값 * 데이터베이스 페이지 크기 = 데이터베이스 생성 시 **cubrid createdb** 유틸리티의 **-s** 옵션에 의해 지정된 페이지 크기 값 임시 결과를 저장하는 공간은 다음과 같다. * 임시 결과 캐시 버퍼(**temp_file_memory_size_in_pages** 시스템 파라미터에 의해 확보된 메모리) * 일시적 데이터 저장을 위한 영구적 볼륨 * 일시적 볼륨 기존의 저장 공간이 소진되면 일시적 결과 저장을 위해 캐시 버퍼 -> 영구적 볼륨 -> 일시적 볼륨의 순서로 저장 공간이 사용된다. **thread_stacksize** **thread_stacksize**\ 는 스레드의 스택 크기를 설정하기 위한 파라미터로 기본값은 **1048576** 바이트이다. **thread_stacksize** 파라미터의 설정값은 운영체제가 허용하는 스택 크기를 초과할 수 없다. .. _disk-parameters: 디스크 관련 파라미터 -------------------- 다음은 데이터베이스 볼륨 정의 및 파일 저장을 위한 디스크 관련 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다. +-----------------------------+--------+---------+---------+---------+ | 파라미터 이름 | 타입 | 기본값 | 최소값 | 최대값 | +=============================+========+=========+=========+=========+ | db_volume_size | byte | 512M | 0 | 20G | +-----------------------------+--------+---------+---------+---------+ | dont_reuse_heap_file | bool | no | | | +-----------------------------+--------+---------+---------+---------+ | log_volume_size | byte | 512M | 20M | 4G | +-----------------------------+--------+---------+---------+---------+ | temp_file_max_size_in_pages | int | -1 | | | +-----------------------------+--------+---------+---------+---------+ | temp_volume_path | string | NULL | | | +-----------------------------+--------+---------+---------+---------+ | unfill_factor | float | 0.1 | 0.0 | 0.3 | +-----------------------------+--------+---------+---------+---------+ | volume_extension_path | string | NULL | | | +-----------------------------+--------+---------+---------+---------+ **db_volume_size** **db_volume_size**\ 는 다음과 같은 값을 설정하는 파라미터이다. 값 뒤에 B, K, M, G, T로 단위를 붙일 수 있으며, 각각 Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 기본값은 **512M**\ 이다. * **cubrid createdb**\ 와 **cubrid addvoldb** 유틸리티에서 **--db-volume-size** 옵션을 생략했을 때 생성되는 데이터베이스 볼륨의 기본 크기 * 데이터베이스 볼륨 공간을 모두 사용하면 자동으로 추가되는 볼륨의 기본 크기 .. note:: 실제 볼륨 크기는 항상 64개 디스크 섹터의 배수로 올림된다. 섹터 크기는 페이지의 크기에 따라 달라지므로, 64개 섹터 크기는 페이지 크기 4k, 8k 또는 16k 각각에 대해 16M, 32M 또는 64M이다. **dont_reuse_heap_file** **dont_reuse_heap_file** 은 테이블 삭제(**DROP TABLE**)로 인해 삭제된 힙 파일을 새로운 테이블 생성(**CREATE TABLE**) 시 재사용하지 않도록 설정하는 파라미터로, no로 설정되면 삭제된 힙 파일을 재사용하고, yes로 설정되면 삭제된 힙 파일을 재사용하지 않는다. 기본값은 **no** 이다. **log_volume_size** **log_volume_size**\ 는 **cubrid createdb** 유틸리티에서 **--log-volume-size** 옵션이 생략되었을 때 로그 볼륨 파일의 기본 크기를 설정하는 파라미터이다. 값 뒤에 B, K, M, G, T로 단위를 붙일 수 있으며, 각각 Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 기본값은 **512M** 이다. **temp_file_max_size_in_pages** **temp_file_max_size_in_pages** 는 일시적 볼륨을 확장할 수 있는 최대 페이지 수를 설정하는 파라미터이다. 기본값은 **-1** 이며 일시적 볼륨이 무제한 디스크 공간을 차지할 수 있음을 뜻한다. 제한을 두기 위해서는 양수 값으로 설정할 수 있으며 설정된 값을 초과하면 오류가 표시되고 일부 큰 질의가 취소될 수 있다. 이 파라미터를 **0**으로 설정하면 일시적 볼륨이 자동으로 생성되지 않으며 관리자가 **cubrid addvoldb** 유틸리티를 사용해 일시적 데이터를 저장하기 위한 용도로 영구적 볼륨을 생성해야 한다. 자세한 사항은 다음을 참고하도록 한다. :ref:`temporary-volumes` **temp_volume_path** **temp_volume_path**\ 는 복잡한 질의문이나 정렬 수행을 위하여 자동으로 생성되는 일시적 임시 볼륨(temporary temp volume)의 디렉터리를 지정하는 파라미터로 기본값은 데이터베이스 생성 시에 설정된 볼륨 위치이다. **unfill_factor** **unfill_factor**\ 는 데이터 갱신에 대비하여 힙(heap) 페이지로 할당되는 디스크 공간의 비율을 정의하기 위한 파라미터로 기본값은 **0.1**\ 로 10%의 여유 공간이 설정된다. 원칙적으로, 테이블의 데이터는 물리적인 순서대로 삽입되지만, 데이터가 원래 크기보다 큰 데이터로 갱신되어 해당 페이지의 저장 공간이 부족하면 갱신된 데이터는 다른 페이지에 재배치되어야 하므로 성능이 저하될 수 있다. 이를 방지하기 위하여 **unfill_factor** 파라미터를 통해 힙 페이지 공간 비율을 설정할 수 있고, 최대값은 0.3(30%)까지 허용된다. 한편, 데이터 갱신이 거의 발생하지 않는 데이터베이스에서는 이 파라미터를 0.0으로 설정하여 데이터 갱신을 위한 힙 페이지 공간을 할당하지 않을 수 있고, **unfill_factor** 파라미터의 값이 음수거나 최대값보다 크게 설정되는 경우에는 기본값(**0.1**)이 적용된다. **volume_extension_path** **volume_extension_path**\ 는 **cubrid addvoldb** 유틸리티로 추가 볼륨을 생성할 때 추가 볼륨의 경로를 지정하는 **-F** 옵션을 생략하면 기본 경로로 사용할 경로를 지정하는 파라미터이다. 기본값은 데이터베이스 생성 시에 설정된 볼륨 위치이다. .. _error-parameters: 오류 메시지 관련 파라미터 ------------------------- 다음은 CUBRID에 의해 기록되는 오류 메시지의 처리에 관한 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다. +-----------------------------------+--------+--------------------------------+ | 파라미터 이름 | 타입 | 기본값 | +===================================+========+================================+ | call_stack_dump_activation_list | string | DEFAULT | +-----------------------------------+--------+--------------------------------+ | call_stack_dump_deactivation_list | string | NULL | +-----------------------------------+--------+--------------------------------+ | call_stack_dump_on_error | bool | no | +-----------------------------------+--------+--------------------------------+ | error_log | string | cub_client.err, cub_server.err | +-----------------------------------+--------+--------------------------------+ | error_log_level | string | NOTIFICATION | +-----------------------------------+--------+--------------------------------+ | error_log_warning | bool | no | +-----------------------------------+--------+--------------------------------+ | error_log_size | int | 512M | +-----------------------------------+--------+--------------------------------+ **call_stack_dump_activation_list** **call_stack_dump_activation_list**\ 는 모든 오류에 대해 콜-스택을 서버 에러 로그 파일($CUBRID/log/server 디렉터리에 위치)에 덤프하지 않기로 설정한 상태에서, 예외적으로 콜-스택을 덤프할 특정 오류 번호를 지정하기 위한 파라미터이다. 따라서, **call_stack_dump_activation_list** 파라미터는 **call_stack_dump_on_error** 의 값이 **no** 인 경우에만 효력이 있다. 값을 설정하지 않을 경우 기본값은 "DEFAULT" 키워드이며, 다음 오류들을 포함한다. "DEFAULT" 키워드는 다른 오류 번호와 함께 사용될 수 있다. +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | 오류 번호 | 오류 메시지 | +===========+===============================================================================================================================================+ | -2 | Internal system failure: no more specific information is available. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -7 | Trying to format disk volume xxx with an incorrect value xxx for number of pages. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -13 | An I/O error occurred while reading page xxx of volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -14 | An I/O error occurred while writing page xxx of volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -17 | Internal error: fetching deallocated pageid xxx of volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -19 | Internal error: pageptr = xxx of page xxx of volume xxx is not fixed. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -21 | Internal error: unknown sector xxx of volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -22 | Internal error: unknown page xxx of volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -45 | Slot xxx on page xxx of volume xxx is allocated to an anchored record. A new record cannot be inserted here. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -46 | Internal error: slot xxx on page xxx of volume xxx is not allocated. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -48 | Accessing deleted object xxx|xxx|xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -50 | Internal error: relocation record of object xxx|xxx|xxx may be corrupted. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -51 | Internal error: object xxx|xxx|xxx may be corrupted. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -52 | Internal error: object overflow address xxx|xxx|xxx may be corrupted. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -76 | Your transaction (index xxx, xxx@xxx|xxx) timed out waiting on xxx on page xxx|xxx. You are waiting for user(s) xxx to release the page lock. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -78 | Internal error: an I/O error occurred while reading logical log page xxx (physical page xxx) of xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -79 | Internal error: an I/O error occurred while writing logical log page xxx (physical page xxx) of xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -81 | Internal error: logical log page xxx may be corrupted. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -90 | Redo logging is always a page level logging operation. A data page pointer must be given as part of the address. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -96 | Media recovery may be needed on volume xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -97 | Internal error: unable to find log page xxx in log archives. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -313 | Object buffer underflow while reading. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -314 | Object buffer overflow while writing. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -407 | Unknown key xxx referenced in B+tree index {vfid: (xxx, xxx), rt_pgid: xxx, key_type: xxx}. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -414 | Unknown class identifier: xxx|xxx|xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -415 | Invalid class identifier: xxx|xxx|xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -416 | Unknown representation identifier: xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -417 | Invalid representation identifier: xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -583 | Trying to allocate an invalid number (xxx) of pages. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -603 | Internal Error: Sector/page table of file VFID xxx|xxx seems corrupted. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -836 | LATCH ON PAGE(xxx|xxx) TIMEDOUT | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -859 | LATCH ON PAGE(xxx|xxx) ABORTED | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -890 | Partition failed. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -891 | Appropriate partition does not exist. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -976 | Internal error: Table size overflow (allocated size: xxx, accessed size: xxx) at file table page xxx|xxx(volume xxx) | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -1040 | HA generic: xxx. | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | -1075 | Descending index scan aborted because of lower priority on B+tree with index identifier: (vfid = (xxx, xxx), rt_pgid: xxx). | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------+ 다음은 -115, -116번의 오류 번호에 대해서만 콜-스택 덤프가 수행되도록 파라미터를 설정한 예제이다. :: call_stack_dump_on_error= no call_stack_dump_activation_list=-115,-116 다음은 -115, -116번의 오류 번호와 "DEFAULT" 오류 번호에 대해 콜-스택 덤프가 수행되도록 파라미터를 설정한 예제이다. :: call_stack_dump_on_error= no call_stack_dump_activation_list=-115,-116, DEFAULT **call_stack_dump_deactivation_list** **call_stack_dump_deactivation_list**\ 는 모든 오류에 대해 콜-스택 덤프를 설정한 상태에서, 예외적으로 콜-스택을 덤프하지 않는 특정 오류 번호를 지정하기 위한 파라미터이다. 따라서, **call_stack_dump_deactivation_list** 파라미터는 **call_stack_dump_on_error** 의 값이 **yes** 인 경우에만 효력이 있다. 다음은 -115, -116번의 오류 번호를 제외한 나머지 오류에 대해서 콜-스택 덤프를 수행하기 위해 파라미터를 설정한 예제이다. :: call_stack_dump_on_error= yes call_stack_dump_deactivation_list=-115,-116 **call_stack_dump_on_error** **call_stack_dump_on_error** 는 데이터베이스 서버에서 오류가 발생했을 때 콜-스택을 덤프할지 결정하기 위한 파라미터이다. "no" 로 설정되면 모든 오류에 대해서 콜-스택을 덤프하지 않고, "yes" 로 설정되면 모든 오류에 대해서 콜스택을 덤프한다. 기본값은 **no** 이다. **error_log** **error_log** 는 데이터베이스 서버에 오류가 발생하는 경우, 에러 로그가 저장되는 파일 이름을 지정하기 위한 서버/클라이언트 파라미터이다. 에러 로그가 저장되는 파일명의 작성 규칙은 *__