: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 <http://www.cubrid.org/wiki_tools/entry/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 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | use_user_hosts | í´ë¼ì´ì–¸íЏ/서버 | | bool | off | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :ref:`memory-parameters` | data_buffer_size | 서버 | | byte | 32,768 * | | | | | | | | :ref:`db_page_size <dpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | index_scan_oid_buffer_size | 서버 | | byte | 4 * | | | | | | | | :ref:`db_page_size <dpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_agg_hash_size | 서버 | | byte | 2,097,152(2M) | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | max_hash_list_scan_size | 서버 | | byte | 8,388,608(8M) | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sort_buffer_size | 서버 | | byte | 128 * | | | | | | | | :ref:`db_page_size <dpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | 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 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | double_write_buffer_size | 서버 | | byte | 2M | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | data_file_os_advise | 서버 | | int | 0 | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :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 <lpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | 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 <lpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | 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 <dpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | remove_log_archive_interval_in_secs | 서버 | | sec | 0 | DBAë§Œ 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | sync_on_flush_size | 서버 | | byte | 200 * | DBAë§Œ 가능 | | | | | | | :ref:`db_page_size <dpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | ddl_audit_log | í´ë¼ì´ì–¸íЏ | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | ddl_audit_log_size | í´ë¼ì´ì–¸íЏ | | byte | 10M | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :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 | yes | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | allow_truncated_string | í´ë¼ì´ì–¸íЏ/서버 | 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 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | create_table_reuseoid | í´ë¼ì´ì–¸íЏ | O | bool | yes | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | 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 | | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | json_max_array_idx | 서버 | O | string | 65,536 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | no_backslash_escapes | í´ë¼ì´ì–¸íЏ | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | only_full_group_by | í´ë¼ì´ì–¸íЏ | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | oracle_compat_number_behavior | 서버 | | 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:`thread-parameters` | thread_connection_pooling | 서버 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | thread_connection_timeout_seconds | 서버 | | int | 300 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | thread_worker_pooling | 서버 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | thread_core_count | 서버 | | int | 시스템 코어 수 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | thread_worker_timeout_seconds | 서버 | | int | 300 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | loaddb_worker_count | 서버 | | int | 8 | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :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:`query-cache-parameters` | max_query_cache_entries | 서버 | | int | 0 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | query_cache_size_in_pages | 서버 | | int | 0 | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | :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 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | java_stored_procedure_port | 서버 | | int | | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | java_stored_procedure_uds | 서버 | | bool | yes | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | java_stored_procedure_jvm_options | 서버 | | string | | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | multi_range_optimization_limit | 서버 | O | int | 100 | DBAë§Œ 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | optimizer_enable_merge_join | í´ë¼ì´ì–¸íЏ | O | bool | no | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | use_stat_estimation | 서버 | | bool | no | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | 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 <lpg>` | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | data_buffer_neighbor_flush_pages | 서버 | | int | 8 | DBAë§Œ 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | data_buffer_neighbor_flush_nondirty | 서버 | | bool | no | DBAë§Œ 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | tde_keys_file_path | 서버 | | string | NULL | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | tde_default_algorithm | 서버 | | string | AES | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | recovery_progress_logging_interval | 서버 | | int | 0 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | supplemental_log | í´ë¼ì´ì–¸íЏ/서버 | | int | 0 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | regexp_engine | í´ë¼ì´ì–¸íЏ/서버 | | string | re2 | 가능 | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | vacuum_ovfp_check_threshold | 서버 | | int | 1000 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | vacuum_ovfp_check_duration | 서버 | | int | 45000 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | deduplicate_key_level | í´ë¼ì´ì–¸íЏ/서버 | | int | -1 | | | +-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ | | print_index_detail | í´ë¼ì´ì–¸íЏ/서버 | | bool | no | | +-------------------------------+-------------------------------------+-------------------------+---------+----------+--------------------------------+-----------------+ .. _lpg: * **log_page_size**: :ref:`ë°ì´í„°ë² ì´ìФ ìƒì„±<creating-database>` 시 **\-\-log-page-size** 옵션으로 ì§€ì •í•œ 로그 볼륨 페ì´ì§€ í¬ê¸°. 기본값: 16KB. ê´€ë ¨ 파ë¼ë¯¸í„°ì˜ ì„¤ì • ê°’ì€ íŽ˜ì´ì§€ 단위로 버림ëœë‹¤. 예를 들어 checkpoint_every_size ì˜ ê°’ì€ 16KB로 나누어 소수ì ì´í•˜ë¥¼ 버림한 ê°’ì— 16KB를 곱한 ê°’ì´ ëœë‹¤. .. _dpg: * **db_page_size**: :ref:`ë°ì´í„°ë² ì´ìФ ìƒì„±<creating-database>` 시 **\-\-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 | 4,000 | +--------------------+----------+-------------------+---------+---------+ | tcp_keepalive | bool | yes | | | +--------------------+----------+-------------------+---------+---------+ | use_user_hosts | bool | off | | | +--------------------+----------+-------------------+---------+---------+ **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 <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 서버 쪽 ì—°ê²°ì´ ì¢…ë£Œë˜ëŠ” 현ìƒì´ ë°œìƒí• 수 있다. **use_user_hosts** **use_user_hosts** 시스템 파ë¼ë¯¸í„°ëŠ” CUBRID 서비스ì—서 필요한 **호스트명**, **IP 주소** 검색 ê¸°ëŠ¥ì„ ì•„ëž˜ 서비스 중ì—서 ì„ íƒí•˜ê¸° 위해 사용한다. ê¸°ë³¸ê°’ì€ **OFF** ì´ë‹¤. * **시스템** ì—서 ì œê³µí•˜ëŠ” 호스트, IP 주소 검색 ë¼ì´ë¸ŒëŸ¬ë¦¬ (Linuxì˜ ê²½ìš° **glibc**) * **CUBRID** ì—서 ì œê³µí•˜ëŠ” **호스트/IP 주소 검색 ë¼ì´ë¸ŒëŸ¬ë¦¬** use_user_hosts=off (기본값) * 시스템 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 사용하여 IP 주소, í˜¸ìŠ¤íŠ¸ëª…ì„ ê²€ìƒ‰í•œë‹¤. * ì¼ë°˜ì 으로 /etc/hosts íŒŒì¼ ê²€ìƒ‰, DNS Query ë“±ì´ ì‚¬ìš©ëœë‹¤. use_user_hosts=on * CUBRID 호스트 검색 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì´ìš©í•˜ì—¬ IP 주소/í˜¸ìŠ¤íŠ¸ëª…ì„ ê²€ìƒ‰í•œë‹¤. * **$CUBRID/conf/cubrid_hosts.conf** 파ì¼ì„ ì´ìš©í•˜ì—¬, 호스트명과 IP ì£¼ì†Œì„ ê²€ìƒ‰í•œë‹¤ * ì‹œìŠ¤í…œì˜ /etc/hosts, /etc/nsswitch.conf 파ì¼ì— 대한 ì½ê¸° 권한 등과 관계 ì—†ì´ ë™ìž‘한다. .. warning:: **use_user_hosts** 파ë¼ë¯¸í„°ëŠ” 서비스 ìš´ì˜ ì¤‘ 변경ë˜ë©´ ì •ìƒì 으로 서비스가 종료ë˜ì§€ ì•Šì„ ìˆ˜ 있으므로, 반드시 CUBRID 서비스가 ì¢…ë£Œëœ ìƒíƒœì—서 변경해야 한다. * **$CUBRID/conf/cubrid_hosts.conf** 파ì¼ì˜ 형ì‹ì€ **/etc/hosts** 와 ë™ì¼í•˜ë‚˜ 다ìŒê³¼ ê°™ì€ ëª‡ 가지 ì œì•½ì´ ìžˆë‹¤. * **IPv4** 주소 ë§Œì„ í—ˆìš©í•œë‹¤ (**IPv6** 는 허용하지 않는다). * **alias** 는 허용하지 않는다. :: 172.31.0.1 host1 alias1 alias2 * ê°™ì€ ip 주소가 여러 ê°œ 있는 경우 맨 위 ì¤„ì— ìžˆëŠ” {ip, hostname} ì •ë³´ë§Œ 사용ë˜ë©°, 나머지는 무시ëœë‹¤. :: 172.31.0.1 host1 172.31.0.1 alias1 172.31.0.1 alias2 * ë‘ ê°œ ì´ìƒì˜ IPì— ë™ì¼í•œ í˜¸ìŠ¤íŠ¸ëª…ì„ ì‚¬ìš©í• ê²½ìš° 맨 위 ì¤„ì— ìžˆëŠ” IPë§Œ ì ìš©ëœë‹¤. :: 172.31.0.1 host1 178.31.0.2 host1 * 다ìŒì€ $CUBRID/conf/cubrid_hosts.confì˜ ì˜ˆì‹œì´ë‹¤. :: # # hosts file for CUBRID user specific host service # 127.0.0.1 localhost 172.31.0.1 node1 192.168.0.31 node4.kr # Seoul 192.168.2.31 node5.gov.or.kr # Daejeon .. warning:: $CUBRID/conf/cubrid_hosts.conf는 반드시 ëª¨ë“ CUBRID 프로세스를 종료시킨 후 변경해야 하며, **재 êµ¬ë™ í›„ ë³€ê²½ëœ ì‚¬í•ì´ ì ìš©ëœë‹¤.** ë˜í•œ, **localhost** 와 **'hostname'** (Linux ëª…ë ¹ì–´ 중 hostnameì— ì˜í•´ ì¶œë ¥ë˜ëŠ” 호스트명)ì„ ë°˜ë“œì‹œ cubrid_hosts.confì— í¬í•¨í•´ì•¼ 한다. .. warning:: $CUBRID/conf/cubrid_hosts.conf 파ì¼ì—서 호스트 ì´ë¦„ì€ ë‹¤ìŒê³¼ ê°™ì€ í˜•ì‹ì„ 따른다 (Linux 호스트명 작성 규칙). * 호스트 ì´ë¦„으로는 ì˜¤ì§ ì˜ë¬¸ìž, 숫ìž(0 ~ 9), 하ì´í”ˆ('-'), ì (".") 문ìžë§Œ ì‚¬ìš©í• ìˆ˜ 있다. * 호스트 ì´ë¦„ì˜ ì²« 문ìžëŠ” ì˜ë¬¸ìžì´ì–´ì•¼ 한다. * 호스트 ì´ë¦„ì˜ ë§ˆì§€ë§‰ 문ìžëŠ” ì˜ë¬¸ìžì™€ 숫ìžì´ì–´ì•¼ 한다. * FQDN (Fully Qualified Domain Name) í˜•íƒœì˜ í˜¸ìŠ¤íŠ¸ëª…ì´ ì‚¬ìš© 가능하다 (예: www.cubrid.com). 다ìŒê³¼ ê°™ì€ í˜¸ìŠ¤íŠ¸ ì´ë¦„ì€ í—ˆìš©í•œë‹¤. :: cubrid-dev1 CUB2.dev .. _memory-parameters: 메모리 ê´€ë ¨ 파ë¼ë¯¸í„° -------------------- 다ìŒì€ ë°ì´í„°ë² ì´ìФ 서버 ë˜ëŠ” í´ë¼ì´ì–¸íЏì—서 사용하는 메모리와 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +================================+========+===========================+===========================+===========================+ | data_buffer_size | byte | 32,768 * | 1,024 * | 2G(32비트), | | | | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | INT_MAX * | | | | | | :ref:`db_page_size <dpg>` | | | | | | (64비트) | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | index_scan_oid_buffer_size | byte | 4 * | 0.05 * | 16 * | | | | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | max_agg_hash_size | byte | 2,097,152(2M) | 32,768(32K) | 134,217,728(128MB) | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | max_hash_list_scan_size | byte | 8,388,608(8M) | 0 | 128MB | +--------------------------------+--------+---------------------------+---------------------------+---------------------------+ | sort_buffer_size | byte | 128 * | 1 * | 2G(32비트), | | | | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | INT_MAX * | | | | | | :ref:`db_page_size <dpg>` | | | | | | (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 <dpg>` (db_page_sizeê°€ 16Kì¼ ë•Œ **512M**) ì´ê³ , ìµœì†Œê°’ì€ 1,024 * :ref:`db_page_size <dpg>` (db_page_sizeê°€ 16Kì¼ ë•Œ **16M**)ì´ë‹¤. CUBRID 64비트 ë²„ì „ì—서는 ìµœëŒ€ê°’ì´ INT_MAX * :ref:`db_page_size <dpg>`\ ì´ë‹¤. 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 <dpg>` (db_page_sizeê°€ 16Kì¼ ë•Œ **64K**)ì´ë‹¤. ìµœì†Œê°’ì€ 0.05 * :ref:`db_page_size <dpg>` (db_page_sizeê°€ 16Kì¼ ë•Œ 약 **1K**)ì´ê³ , ìµœëŒ€ê°’ì€ 16 * :ref:`db_page_size <dpg>` (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 <no-hash-aggregate>` 힌트가 명시ë˜ë©´, 집계 작업 시 해싱 ë°©ì‹ì´ 사용ë˜ì§€ ì•Šì„ ê²ƒì´ë‹¤. :ref:`agg_hash_respect_order <agg_hash_respect_order>`\ 를 ì°¸ê³ í•œë‹¤. .. _max_hash_list_scan_size: **max_hash_list_scan_size** **max_hash_list_scan_size**\ 는 부질ì˜ë¥¼ í¬í•¨í•˜ëŠ” 질ì˜ì—서 해시 í…Œì´ë¸”ì„ ë¹Œë“œí•˜ê¸° 위해 í• ë‹¹í•œ 트랜ìžì…˜ 당 최대 메모리 í¬ê¸°ë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **8,388,608**\ (8M), ìµœì†Œê°’ì€ 0, ê·¸ë¦¬ê³ ìµœëŒ€ê°’ì€ 134,217,728(128MB)ì´ë‹¤. **max_hash_list_scan_size**\ì´ 0으로 ì„¤ì •ë˜ê±°ë‚˜, :ref:`NO_HASH_LIST_SCAN <no-hash-list-scan>` 힌트가 명시ë˜ë©´, 조회 작업 시 해싱 ë°©ì‹ì´ 사용ë˜ì§€ ì•Šì„ ê²ƒì´ë‹¤. **sort_buffer_size** **sort_buffer_size**\ 는 ì •ë ¬ì„ ìˆ˜í–‰í•˜ëŠ” 질ì˜ì—서 사용ë˜ëŠ” 버í¼ì˜ í¬ê¸°ë¥¼ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. 서버는 ê° í´ë¼ì´ì–¸íŠ¸ì˜ ì •ë ¬ ìš”ì²ë§ˆë‹¤ í•˜ë‚˜ì˜ ì •ë ¬ 버í¼ë¥¼ í• ë‹¹í•˜ë©°, ì •ë ¬ì„ ì™„ë£Œí•œ 후ì—는 í• ë‹¹ë˜ì—ˆë˜ ë²„í¼ ë©”ëª¨ë¦¬ë¥¼ í•´ì œí•œë‹¤. ì •ë ¬ì„ ìˆ˜í–‰í•˜ëŠ” 질ì˜ë¡œëŠ” SELECT ì •ë ¬ ì§ˆì˜ ë¿ë§Œ ì•„ë‹ˆë¼ ì¸ë±ìФ ìƒì„± 질ì˜ë„ í¬í•¨ëœë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 128 * :ref:`db_page_size <dpg>` (db_page_sizeê°€ 16Kì¼ ë•Œ **2M**)ì´ê³ , ìµœì†Œê°’ì€ 1 * :ref:`db_page_size <dpg>` (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 | | | +--------------------------------------+--------+---------+---------+---------+ | double_write_buffer_size | byte | 2M | 0 | 32M | +--------------------------------------+--------+---------+---------+---------+ | data_file_os_advise | int | 0 | 0 | 6 | +--------------------------------------+--------+---------+---------+---------+ **db_volume_size** **db_volume_size**\ 는 다ìŒê³¼ ê°™ì€ ê°’ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ **512M**\ ì´ë‹¤. * **cubrid createdb**\와 **cubrid addvoldb** ìœ í‹¸ë¦¬í‹°ì—서 **\-\-db-volume-size** ì˜µì…˜ì„ ìƒëžµí–ˆì„ 때 ìƒì„±ë˜ëŠ” ë°ì´í„°ë² ì´ìФ ë³¼ë¥¨ì˜ ê¸°ë³¸ í¬ê¸° * ë°ì´í„°ë² ì´ìФ 볼륨 ê³µê°„ì„ ëª¨ë‘ ì‚¬ìš©í•˜ë©´ ìžë™ìœ¼ë¡œ 추가ë˜ëŠ” ë³¼ë¥¨ì˜ ìµœëŒ€ í¬ê¸° (ìžë™ 추가 ë³¼ë¥¨ì€ í•„ìš”ëŸ‰ë§Œí¼ ì ì§„ì 으로 ì¦ê°€ë˜ë©° 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** ì˜µì…˜ì„ ìƒëžµí•˜ë©´ 기본 경로로 ì‚¬ìš©í• ê²½ë¡œë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ ë°ì´í„°ë² ì´ìФ ìƒì„± ì‹œì— ì„¤ì •ëœ ë³¼ë¥¨ 위치ì´ë‹¤. **double_write_buffer_size** **double_write_buffer_size**\ 는 ì´ì¤‘ 쓰기 ë²„í¼ (Double Write Buffer, DWB)ì˜ ë©”ëª¨ë¦¬ì™€ ë””ìŠ¤í¬ ê³µê°„ì„ ì„¤ì •í• ìˆ˜ 있는 파ë¼ë¯¸í„°ì´ë‹¤. ì´ í¬ê¸°ë¥¼ 0으로 ì„¤ì •í•¨ìœ¼ë¡œì¨ Partial I/O를 방지하기 위한 DWB를 사용하지 ì•Šì„ ìˆ˜ 있다. 기본ì 으로 DWB는 활성화ë˜ì–´ 있으며, ê¸°ë³¸ê°’ì€ **2M** ì´ë‹¤. **data_file_os_advise** **data_file_os_advise**\ 는 I/O ì„±ëŠ¥ì„ í–¥ìƒì‹œí‚¤ê¸° 위해 사용ë˜ëŠ” ìœ ë‹‰ìŠ¤ ì „ìš© 파ë¼ë¯¸í„°ì´ë‹¤. 파ë¼ë¯¸í„° ì„¤ì •ê°’ì€ *posix_fadvise()* 플래그로 변환ëœë‹¤. (í”Œëž˜ê·¸ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ `여기 <https://linux.die.net/man/2/posix_fadvise>`_ 를 ì°¸ê³ í•˜ìž.) +-----------------------------------+-------------------------------------------+ | 파ë¼ë¯¸í„° ê°’ | posix_fadvise 플래그 | +===================================+===========================================+ | 0 | 0 | +-----------------------------------+-------------------------------------------+ | 1 | POSIX_FADV_NORMAL | +-----------------------------------+-------------------------------------------+ | 2 | POSIX_FADV_SEQUENTIAL | +-----------------------------------+-------------------------------------------+ | 3 | POSIX_FADV_RANDOM | +-----------------------------------+-------------------------------------------+ | 4 | POSIX_FADV_NOREUSE | +-----------------------------------+-------------------------------------------+ | 5 | POSIX_FADV_WILLNEED | +-----------------------------------+-------------------------------------------+ | 6 | POSIX_FADV_DONTNEED | +-----------------------------------+-------------------------------------------+ .. warning:: posix_fadvise 플래그와 ë°ì´í„° 액세스 ë°©ë²•ì„ ì™„ë²½ížˆ ì´í•´í•´ì•¼ 한다. 파ë¼ë¯¸í„° ì„¤ì •ì€ ì„±ëŠ¥ í–¥ìƒì„ ë„울 ìˆ˜ë„ ìžˆì§€ë§Œ 잘못 ì‚¬ìš©í• ê²½ìš° ì„±ëŠ¥ì„ í•˜ë½ì‹œí‚¬ ìˆ˜ë„ ìžˆë‹¤. ëŒ€ë¶€ë¶„ì˜ ì‹œë‚˜ë¦¬ì˜¤ì—서 ë””í´íЏ ê°’ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ê°€ìž¥ 좋다. .. _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** 는 ë°ì´í„°ë² ì´ìФ ì„œë²„ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ëŠ” 경우, ì—러 로그가 ì €ìž¥ë˜ëŠ” íŒŒì¼ ì´ë¦„ì„ ì§€ì •í•˜ê¸° 위한 서버/í´ë¼ì´ì–¸íЏ 파ë¼ë¯¸í„°ì´ë‹¤. ì—러 로그가 ì €ìž¥ë˜ëŠ” 파ì¼ëª…ì˜ ìž‘ì„± ê·œì¹™ì€ *<database_name>_<date>_<time>.err* ì´ë‹¤. 한편 ì‹œìŠ¤í…œì´ ë°ì´í„°ë² ì´ìФ 서버 ì •ë³´ë¥¼ ì°¾ì„ ìˆ˜ 없는 ì˜¤ë¥˜ì— ëŒ€í•´ì„œëŠ” ì—러 로그 파ì¼ëª…ì˜ ìž‘ì„± ê·œì¹™ì„ ë”°ë¥¼ 수 없다. ë”°ë¼ì„œ, **cubrid.err** 파ì¼ì— 오류 로그를 기ë¡í•œë‹¤. **cubrid.err** ì—러 로그 파ì¼ì€ **$CUBRID/log/server** ë””ë ‰í„°ë¦¬ì— ì €ìž¥ëœë‹¤. **error_log_level** **error_log_level** ì€ ì—러 심ê°ì„±(severity) ìˆ˜ì¤€ì— ë”°ë¼ ì—러 로그 파ì¼ì— ì €ìž¥í• ì—러 메시지를 ì§€ì •í• ìˆ˜ 있는 서버 파ë¼ë¯¸í„°ì´ë‹¤. ì—러 심ê°ì„± ìˆ˜ì¤€ì€ ê°€ìž¥ ë‚®ì€ ìˆ˜ì¤€ì¸ **WARNING** 부터 가장 심ê°í•œ ìˆ˜ì¤€ì¸ **FATAL** 까지 ì´ 5단계로 구성ë˜ë©°, ê·¸ì— ë”°ë¥¸ ì—러 메시지 í¬í•¨ 관계는 **FATAL** < **ERROR** < **SYNTAX** < **NOTIFICATION** < **WARNING** ì´ë‹¤. ê¸°ë³¸ê°’ì€ **NOTIFICATION** ì´ë©°, ì´ ê²½ìš° **FATAL** , **ERROR** , **SYNTAX** , **NOTIFICATION** ì— í•´ë‹¹í•˜ëŠ” ì—러 메시지가 ì—러 로그 파ì¼ì— 기ë¡ëœë‹¤. **error_log_warning** **error_log_warning** ì€ ì—러 심ê°ì„±(severity) ìˆ˜ì¤€ì´ **WARNING** ì¸ ì—러 ë©”ì‹œì§€ì˜ ì¶œë ¥ 여부를 ì„¤ì •í• ìˆ˜ 있는 서버 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ noì´ë‹¤. **WARNING** 메시지가 ì—러 로그 파ì¼ì— ì €ìž¥ë˜ë„ë¡ í•˜ë ¤ë©´, **error_log_warning** ì˜ ê°’ì„ **yes** 로 ì„¤ì •í•´ì•¼ 한다. **error_log_size** **error_log_size** 는 ì—러 로그 파ì¼ì—서 기ë¡ë˜ëŠ” 파ì¼ì˜ í¬ê¸°ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **512M** ì´ë‹¤. ì—러 로그 파ì¼ì˜ í¬ê¸°ê°€ ì´ íŒŒë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì— ë„달하면 *<database_name>_<date>_<time>.err.bak* 파ì¼ì´ ìƒì„±ëœë‹¤. .. _lock-parameters: ë™ì‹œì„±/ìž ê¸ˆ 파ë¼ë¯¸í„° -------------------- 다ìŒì€ ë°ì´í„°ë² ì´ìФ ì„œë²„ì˜ ë™ì‹œì„± ì œì–´ ë° ìž ê¸ˆì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------------+--------+------------+-------------+-------------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=====================================+========+============+=============+=============+ | deadlock_detection_interval_in_secs | float | 1.0 | 0.1 | | +-------------------------------------+--------+------------+-------------+-------------+ | isolation_level | int | 4 | 4 | 6 | +-------------------------------------+--------+------------+-------------+-------------+ | lock_escalation | int | 100,000 | 5 | | +-------------------------------------+--------+------------+-------------+-------------+ | lock_timeout | msec | -1(ë¬´ì œí•œ) | 0(대기안함) | INT_MAX | +-------------------------------------+--------+------------+-------------+-------------+ | rollback_on_lock_escalation | bool | no | | | +-------------------------------------+--------+------------+-------------+-------------+ **deadlock_detection_interval_in_secs** **deadlock_detection_interval_in_secs**\ 는 ì¤‘ë‹¨ëœ íŠ¸ëžœìžì…˜ì— 대해 êµì°© ìƒíƒœ 여부를 íƒì§€í•˜ëŠ” 주기를 ì´ˆ 단위로 ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. CUBRID ì‹œìŠ¤í…œì€ êµì°© ìƒíƒœì— 있는 트랜ìžì…˜ 중 하나를 롤백시켜 êµì°© ìƒíƒœë¥¼ 해결한다. ê¸°ë³¸ê°’ì€ 1ì´ˆì´ë©°, ìµœì†Œê°’ì€ 0.1ì´ˆì´ë‹¤. ì´ ê°’ì€ 0.1ì´ˆ 단위로 올림하여 ë™ìž‘한다. 즉, ìž…ë ¥ê°’ì´ 0.12ì´ˆì´ë©´ 0.2초를 ìž…ë ¥í•œ 것과 ê°™ì´ ë™ìž‘한다. íƒì§€ 주기가 길면 오랜 시간ë™ì•ˆ êµì°© ìƒíƒœë¥¼ íƒì§€í• 수 없으므로 주ì˜í•œë‹¤. **isolation_level** **isolation_level**\ ì€ íŠ¸ëžœìžì…˜ì˜ 격리 ìˆ˜ì¤€ì„ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ 격리 ìˆ˜ì¤€ì´ ë†’ì„ìˆ˜ë¡ íŠ¸ëžœìžì…˜ì˜ ë™ì‹œì„±ì´ ì ê³ ë‹¤ë¥¸ ë™ì‹œì„± 트랜ìžì…˜ì— ì˜í•´ ê°„ì„받지 않는다. **isolation_level** 파ë¼ë¯¸í„°ëŠ” 격리 ìˆ˜ì¤€ì„ ì˜ë¯¸í•˜ëŠ” 4ì—서 6ê¹Œì§€ì˜ ì •ìˆ˜ê°’ ë˜ëŠ” 문ìžì—´ë¡œ ì„¤ì •í•˜ë©°, ê¸°ë³¸ê°’ì€ **READ COMMITTED**\ ì´ë‹¤. ê° ê²©ë¦¬ 수준 ë° íŒŒë¼ë¯¸í„° ì„¤ì •ê°’ì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ :ref:`transaction-isolation-level` ê³¼ ë‹¤ìŒ í‘œë¥¼ 참조한다. +----------------------------+-------------------------------------------------------------------------------------------+ | 격리 수준 | isolation_level 파ë¼ë¯¸í„° ì„¤ì •ê°’ | +============================+===========================================================================================+ | SERIALIZABLE | "TRAN_SERIALIZABLE" or 6 | +----------------------------+-------------------------------------------------------------------------------------------+ | REPEATABLE READ | "TRAN_REP_CLASS_REP_INSTANCE" or "TRAN_REP_READ" or 5 | +----------------------------+-------------------------------------------------------------------------------------------+ | READ COMMITTED | "TRAN_REP_CLASS_COMMIT_INSTANCE" or "TRAN_READ_COMMITTED" or "TRAN_CURSOR_STABILITY" or 4 | +----------------------------+-------------------------------------------------------------------------------------------+ * **TRAN_SERIALIZABLE** : 가장 ë†’ì€ ìˆ˜ì¤€ì˜ ì¼ê´€ì„±ì„ 보장하는 격리 수준ì´ë©°, :ref:`isolation-level-6` ì„ ì°¸ê³ í•œë‹¤. * **TRAN_REP_READ** : ìœ ë ¹ ì½ê¸°(phantom read)ê°€ ë°œìƒí• 수 있는 격리 수준ì´ë©°, :ref:`isolation-level-5` 를 ì°¸ê³ í•œë‹¤. * **TRAN_READ_COMMITTED** : 반복 불가능한 ì½ê¸°(unrepeatable read)ê°€ ë°œìƒí• 수 있는 격리 수준ì´ë©°, :ref:`isolation-level-4` 를 ì°¸ê³ í•œë‹¤. .. note:: 9.3 ì´í•˜ ë²„ì „ì—서는 다ìŒì˜ 격리 ìˆ˜ì¤€ì„ ì¶”ê°€ë¡œ ì§€ì›í•œë‹¤. 10.0부터는 ë‹¤ëŸ‰ì˜ ë™ì‹œ 트랜ìžì…˜ 처리 시 MVCC ê¸°ë²•ì„ ì 용하여 격리 ìˆ˜ì¤€ì„ ë‚®ì¶”ì§€ ì•Šê³ ë„ ë™ì‹œì„±ì„ ë” ìž˜ ë³´ìž¥í• ìˆ˜ 있게 ë˜ì—ˆê¸° 때문ì—, ì•„ëž˜ì˜ ë‚®ì€ ê²©ë¦¬ ìˆ˜ì¤€ì„ ë” ì´ìƒ 사용하지 않게 ë˜ì—ˆë‹¤. * **TRAN_REP_CLASS_UNCOMMIT_INSTANCE** : ë”í‹° ì½ê¸°(dirty read)ê°€ ë°œìƒë 수 있는 격리 수준ì´ë‹¤. * **TRAN_COMMIT_CLASS_COMMIT_INSTANCE** : 반복 불가능한 ì½ê¸°(unrepeatable read)ê°€ ë°œìƒë 수 ìžˆê³ , ë°ì´í„° 조회 ì¤‘ì— ë‹¤ë¥¸ 트랜ìžì…˜ì— ì˜í•œ í…Œì´ë¸” ìŠ¤í‚¤ë§ˆì˜ ë³€ê²½ì´ í—ˆìš©ë˜ëŠ” 격리 수준ì´ë‹¤. * **TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE** : ë”í‹° ì½ê¸°(dirty read)ê°€ ë°œìƒë 수 ìžˆê³ , ë°ì´í„° 조회 ì¤‘ì— ë‹¤ë¥¸ 트랜ìžì…˜ì— ì˜í•œ í…Œì´ë¸” ìŠ¤í‚¤ë§ˆì˜ ë³€ê²½ì´ í—ˆìš©ë˜ëŠ” 격리 수준ì´ë‹¤. **lock_escalation** **lock_escalation** ì€ í–‰ì— ëŒ€í•œ ìž ê¸ˆì´ í…Œì´ë¸” ìž ê¸ˆìœ¼ë¡œ 확대ë˜ê¸° ì „ì— ê°œë³„ í–‰ì— í—ˆìš©ë˜ëŠ” 최대 ìž ê¸ˆì˜ ê°œìˆ˜ë¥¼ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **100,000** ì´ë‹¤. **lock_escalation** 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì´ ìž‘ìœ¼ë©´, 메모리 ìž ê¸ˆ ê´€ë¦¬ì— ì˜í•œ 오버헤드가 ì ì€ ë°˜ë©´ ë™ì‹œì„±ì€ ì¤„ì–´ë“ ë‹¤. 반대로 ì„¤ì •ê°’ì´ í¬ë©´ 메모리 ìž ê¸ˆ ê´€ë¦¬ì— ì˜í•œ 오버헤드가 í° ë°˜ë©´ ë™ì‹œì„±ì´ í–¥ìƒëœë‹¤. **lock_timeout** **lock_timeout** ì€ ìž ê¸ˆ 대기 ì‹œê°„ì„ ì§€ì •í•˜ê¸° 위한 í´ë¼ì´ì–¸íЏ 파ë¼ë¯¸í„°ë¡œ ì§€ì •ëœ ì‹œê°„ ì´ë‚´ì— ìž ê¸ˆì´ í—ˆìš©ë˜ì§€ 않으면 해당 트랜ìžì…˜ì´ 취소ë˜ê³ 오류가 반환ëœë‹¤. ê¸°ë³¸ê°’ì¸ **-1** 로 ì„¤ì •í•˜ë©´ ìž ê¸ˆì´ í—ˆìš©ë ë•Œê¹Œì§€ì˜ ëŒ€ê¸° ì‹œê°„ì´ ë¬´ì œí•œì´ê³ , 0으로 ì„¤ì •í•˜ë©´ ìž ê¸ˆì„ ëŒ€ê¸°í•˜ì§€ 않는다. s, min, h 단위를 ì§€ì •í• ìˆ˜ 있으며 ê°ê° seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 기본 단위는 밀리초(ms)ì´ë©°, 밀리초로 ì„¤ì •í•œ ê°’ì€ ì´ˆ 단위로 올림ëœë‹¤. 예를 들어, 1ms는 1sê°€ ë˜ë©°, 1001ms는 2sê°€ ëœë‹¤. **rollback_on_lock_escalation** ìž ê¸ˆ ì—ìŠ¤ì»¬ë ˆì´ì…˜ ë°œìƒ ì‹œ 트랜ìžì…˜ì˜ 롤백 여부를 ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **no**\ ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ê°€ **yes**\ 로 ì„¤ì •ë˜ë©´, ìž ê¸ˆ ì—ìŠ¤ì»¬ë ˆì´ì…˜ ë°œìƒ ì‹œì ì— ì—ìŠ¤ì»¬ë ˆì´ì…˜ ì—†ì´ ì—러 로그를 기ë¡í•˜ê³ , 해당 ìž ê¸ˆ ìš”ì²ì€ 실패하면서 트랜ìžì…˜ì„ 롤백한다. no로 ì„¤ì •ë˜ë©´ ìž ê¸ˆ ì—ìŠ¤ì»¬ë ˆì´ì…˜ì´ 수행ë˜ê³ 트랜ìžì…˜ì„ ê³„ì† ì§„í–‰í•œë‹¤. ìž ê¸ˆ ì—ìŠ¤ì»¬ë ˆì´ì…˜ì´ ë°œìƒí•˜ë©´ ë ˆì½”ë“œ ìž ê¸ˆì´ í…Œì´ë¸” ìž ê¸ˆìœ¼ë¡œ ì „í™˜ë˜ê³ , ìž ê¸ˆ(lock)ì„ í•´ì œí•˜ëŠ” ì‹œê°„ì´ ì˜¤ëž˜ 걸리면서 해당 í…Œì´ë¸”ì— ëŒ€í•œ 다른 트랜ìžì…˜ì˜ ì ‘ê·¼ì´ ë¶ˆê°€í•˜ê²Œ ë˜ëŠ” ìƒí™©ì´ ë°œìƒí• 수 있다. ê·¸ë ‡ë‹¤ê³ ìž ê¸ˆ ì—ìŠ¤ì»¬ë ˆì´ì…˜ì´ ë°œìƒí•˜ëŠ” ë ˆì½”ë“œ ìž ê¸ˆ 개수를 ì§€ì •í•˜ëŠ” **lock_escalation** 파ë¼ë¯¸í„° ê°’ì„ í¬ê²Œ 하면 메모리 ìžì›ì„ ë§Žì´ ì‚¬ìš©í•˜ëŠ” ë¬¸ì œê°€ ë°œìƒí• 수 있다. .. _logging-parameters: 로깅 ê´€ë ¨ 파ë¼ë¯¸í„° ------------------ 다ìŒì€ CUBRID ë°ì´í„°ë² ì´ìŠ¤ì˜ ë°±ì—…ê³¼ ë³µêµ¬ì— ì´ìš©ë˜ëŠ” ë¡œê·¸ì— ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=====================================+========+============================+============================+============================+ | adaptive_flush_control | bool | yes | | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | background_archiving | bool | yes | | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | checkpoint_every_size | byte | 10,000 * | 10 * | | | | | :ref:`log_page_size <lpg>` | :ref:`log_page_size <lpg>` | :ref:`log_page_size <lpg>` | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | checkpoint_interval | msec | 6min | 1min | 35,791,394min | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | checkpoint_sleep_msecs | msec | 1 | 0 | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | force_remove_log_archives | bool | yes | | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | log_buffer_size | byte | 16k * | 128 * | INT_MAX * | | | | :ref:`log_page_size <lpg>` | :ref:`log_page_size <lpg>` | :ref:`log_page_size <lpg>` | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | log_max_archives | int | INT_MAX | 0 | INT_MAX | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | log_trace_flush_time | int | 0 | 0 | INT_MAX | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | max_flush_size_per_second | byte | 10,000 * | 1 * | INT_MAX * | | | | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | remove_log_archive_interval_in_secs | sec | 0 | 0 | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | sync_on_flush_size | byte | 200 * | 1 * | INT_MAX * | | | | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | :ref:`db_page_size <dpg>` | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | ddl_audit_log | bool | no | | | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ | ddl_audit_log_size | byte | 10M | 10M | 2G | +-------------------------------------+--------+----------------------------+----------------------------+----------------------------+ **adaptive_flush_control** **adaptive_flush_control**\ 는 ë‚´ë ¤ì“°ê¸°(flush) 작업 ì¤‘ì— 50ms마다 작업 ìƒíƒœì— ë”°ë¼ ë‚´ë ¤ì“°ê¸°í• ìš©ëŸ‰(flush capacity)ì„ ìžë™ ì¡°ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë©°, ê¸°ë³¸ê°’ì€ **yes**\ ì´ë‹¤. 즉, íŠ¹ì • 시ì ì— **INSERT** ë˜ëŠ” **UPDATE** ì—°ì‚°ì´ ì§‘ì¤‘ë˜ì–´ ë‚´ë ¤ì“°ê¸°í•œ 페ì´ì§€ 수가 **max_flush_pages_per_second** 파ë¼ë¯¸í„° ê°’ì— ë„달하면 ì´ ìš©ëŸ‰ì„ ì¦ê°€ì‹œí‚¤ê³ , ì´ì— ë„달하지 못하면 ì´ ìš©ëŸ‰ì„ ê°ì†Œì‹œí‚¨ë‹¤. ì´ì²˜ëŸ¼ 워í¬ë¡œë“œì— ë”°ë¼ ì£¼ê¸°ì 으로 ë‚´ë ¤ì“°ê¸° ìš©ëŸ‰ì„ ì¡°ì •í•˜ì—¬ I/O 부하를 ë¶„ì‚°í• ìˆ˜ 있다. **background_archiving** **background_archiving**\ ì€ íŠ¹ì • 시ì 마다 주기ì 으로 임시 ë³´ê´€ 로그를 ìƒì„±í•˜ë„ë¡ í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ë³´ê´€ 로그 작업으로 ì¸í•œ ë””ìŠ¤í¬ I/O 부하를 ë¶„ì‚°ì‹œí‚¤ê³ ìž í• ë•Œ ìœ ìš©í•˜ë‹¤. ê¸°ë³¸ê°’ì€ **yes**\ ì´ë‹¤. **checkpoint_every_size** **checkpoint_every_size**\ 는 ì²´í¬í¬ì¸íŠ¸ê°€ 수행ë˜ëŠ” 주기를 로그 페ì´ì§€ 단위로 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 10,000 * :ref:`log_page_size <lpg>` (log_page_sizeê°€ 16Kì´ë©´ **156.25M**)ì´ë‹¤. íŠ¹ì • ì‹œê°„ëŒ€ì— **INSERT** / **UPDATE** ê°€ 집중ë˜ëŠ” 서비스 환경ì—서는 **checkpoint_every_size** 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì„ ìž‘ê²Œ ì„¤ì •í•˜ì—¬ ì²´í¬í¬ì¸íЏ 시ì ì— I/O 부하를 ë¶„ì‚°í• ìˆ˜ 있다. ì²´í¬í¬ì¸íŠ¸ëŠ” íŠ¹ì • 시ì ì— ë°ì´í„° 버í¼ì— 있는 페ì´ì§€ 중 임시 페ì´ì§€ë¥¼ ì œì™¸í•œ ëª¨ë“ ìˆ˜ì •ëœ íŽ˜ì´ì§€ë¥¼ ë°ì´í„°ë² ì´ìФ 볼륨(디스í¬)ì— ê¸°ë¡í•˜ëŠ” 작업ì´ë‹¤. ì²´í¬í¬ì¸íŠ¸ëŠ” ë°ì´í„°ë² ì´ìФ ìž¥ì• ë°œìƒ ì´í›„ 복구 시 ì²´í¬í¬ì¸íŠ¸ê°€ ë°œìƒí•˜ê¸° ì „ì˜ íŠ¸ëžœìžì…˜ 로그를 ë°˜ì˜í• 필요가 없게 하여 복구 ì‹œê°„ì„ ë‹¨ì¶•ì‹œí‚¤ëŠ” 효과가 있다. 다만, ì²´í¬í¬ì¸íЏ 작업으로 ì¸í•´ ë””ìŠ¤í¬ I/Oê°€ ë°œìƒí•˜ì—¬ DB ìš´ì˜ì— ì˜í–¥ì„ ë¼ì¹ 수 있으므로 ì²´í¬í¬ì¸íЏ 주기를 ì ì ˆí•˜ê²Œ ì„¤ì •í•´ì•¼ 한다. .. note:: CUBRIDì—서 ì²´í¬í¬ì¸íŠ¸ëŠ” 4가지 방법으로 ì œê³µë˜ëŠ”ë°, 다ìŒì˜ 2가지는 cubrid.confì˜ ì„¤ì •ì— ì˜í•´ ì œê³µëœë‹¤. * **checkpoint_interval**: ì²´í¬í¬ì¸íŠ¸ê°€ ì™„ë£Œëœ ì´í›„ ì´ íŒŒë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì´ ê²½ê³¼ëœ ì‹œê°„ë§ˆë‹¤ ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì£¼ê¸°ì 으로 수행ëœë‹¤. * **checkpoint_every_size**: 트랜ìžì…˜ 로그 파ì¼ì˜ í¬ê¸°ê°€ ì´ íŒŒë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì— ë„달하는 시ì 마다 ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì£¼ê¸°ì 으로 수행ëœë‹¤. ì´ìƒ ë‘ ê°œì˜ íŒŒë¼ë¯¸í„° ì¡°ê±´ 중 하나만 만족하면 ì²´í¬í¬ì¸íŠ¸ê°€ 수행ëœë‹¤. 다ìŒì˜ 2가지는 사용ìžì˜ ëª…ë ¹ìœ¼ë¡œ ì œê³µëœë‹¤. * CSQL ì¸í„°í”„리터를 "DBA" 사용ìžë¡œ 실행한 ì´í›„ ";checkpoint" ëª…ë ¹ì„ ìˆ˜í–‰í•˜ë©´ ì²´í¬í¬ì¸íŠ¸ê°€ 수행ëœë‹¤. ì°¸ê³ ë¡œ ì²´í¬í¬ì¸íЏ 수행 ë„ì¤‘ì— ë°±ì—…ì„ ìˆ˜í–‰í•˜ë©´, ì²´í¬í¬ì¸íŠ¸ê°€ 종료ë 때까지 백업 ëª…ë ¹ì€ ëŒ€ê¸° ìƒíƒœê°€ ëœë‹¤. **checkpoint_interval** **checkpoint_interval**\ ì€ ì²´í¬í¬ì¸íŠ¸ê°€ 수행ë˜ëŠ” 주기를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ms, s, min, h 단위를 ì§€ì •í• ìˆ˜ 있으며 ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 기본 단위는 밀리초(ms)ì´ë©°, 밀리초로 ì„¤ì •í•œ ê°’ì€ ì´ˆ 단위로 올림ëœë‹¤. 예를 들어, 1ms는 1sê°€ ë˜ë©°, 1001ms는 2sê°€ ëœë‹¤. ê¸°ë³¸ê°’ì€ **6min**\ ì´ê³ , ìµœì†Œê°’ì€ 1minì´ë‹¤. ìµœëŒ€ê°’ì€ 35791394minì´ë‹¤. **checkpoint_sleep_msecs** ì²´í¬í¬ì¸íŠ¸ê°€ ë°œìƒí• 때 버í¼ì˜ ë°ì´í„°ë¥¼ 디스í¬ì— 플러시하는 ìž‘ì—…ì„ ì²œì²œížˆ 진행하게 하는 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **1** (밀리초)ì´ë‹¤. **force_remove_log_archives** **force_remove_log_archives**\ 는 **log_max_archives**\ 로 ì§€ì •í•œ ê°œìˆ˜ì˜ ìµœê·¼ ë³´ê´€ 로그(log archive) 파ì¼ì„ ì œì™¸í•œ 나머지 파ì¼ì˜ ì‚ì œ 허용 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **yes**\ ì´ë‹¤. 파ë¼ë¯¸í„° ê°’ì„ **yes** 로 ì„¤ì •í•˜ë©´, **log_max_archives**\ 로 ì§€ì •í•œ ê°œìˆ˜ì˜ ìµœê·¼ ë³´ê´€ 로그 파ì¼ì„ ì œì™¸í•œ 나머지 파ì¼ì´ ì‚ì œëœë‹¤. 파ë¼ë¯¸í„° ê°’ì„ **no** 로 ì„¤ì •í•˜ë©´, ë³´ê´€ 로그 파ì¼ì´ ì‚ì œë˜ì§€ 않지만, 예외ì 으로 **ha_mode**\ 를 on으로 ì„¤ì •í•˜ë©´ HA ê´€ë ¨ í”„ë¡œì„¸ìŠ¤ì— í•„ìš”í•œ ë³´ê´€ 로그 파ì¼ê³¼ **log_max_archvies**\ 로 ì§€ì •í•œ ê°œìˆ˜ì˜ ìµœê·¼ ë³´ê´€ 로그 파ì¼ì„ ì œì™¸í•œ 나머지 파ì¼ì´ ì‚ì œëœë‹¤. CUBRID HA í™˜ê²½ì„ êµ¬ì¶•í•˜ê³ ìž í•˜ëŠ” 사용ìžëŠ” :ref:`ha-configuration`\ ì„ ì°¸ê³ í•œë‹¤. **log_buffer_size** **log_buffer_size** 는 ë©”ëª¨ë¦¬ì— ìºì‹œë˜ëŠ” 로그 버í¼ì˜ í¬ê¸°ë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 128 * :ref:`log_page_size <dpg>` (log_page_sizeê°€ 16Kì´ë©´ **2M**) ì´ë‹¤. **log_buffer_size** 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì´ í¬ë©´ ë°ì´í„°ë² ì´ìФ ìˆ˜ì • ì—°ì‚°ì´ ë§Žê³ , 수행 ì‹œê°„ì´ ê¸´ 트랜ìžì…˜ ë§Žì€ í™˜ê²½ì—서는 ë””ìŠ¤í¬ I/Oê°€ ê°ì†Œë˜ì–´ ì„±ëŠ¥ì´ í–¥ìƒë 수 있다. CUBRIDì˜ MVCC ì‹œìŠ¤í…œì€ ì´ì „ ë²„ì „ì˜ ê°’ì— ì ‘ê·¼í•˜ëŠ” 것과 ë°ì´í„°ë² ì´ìФì—서 ì‚ì œëœ ê°’ì„ íšŒìˆ˜í•˜ê¸° 위해 ë¡œê·¸ì— ì˜ì¡´í•œë‹¤. ë”°ë¼ì„œ CUBRIDê°€ ì„¤ì¹˜ëœ ì‹œìŠ¤í…œì˜ ë©”ëª¨ë¦¬ í¬ê¸° ë° ìž‘ì—… ì—°ì‚°ì˜ í¬ê¸°ë¥¼ ê³ ë ¤í•˜ì—¬ ì 당한 값으로 ì„¤ì •í• ê²ƒì„ ê¶Œìž¥í•œë‹¤. * 필요한 메모리 í¬ê¸° = 로그 ë²„í¼ í¬ê¸°(**log_buffer_size**) .. _log_max_archives: **log_max_archives** **log_max_archives**\ 는 ë³´ì¡´í• ë³´ê´€ 로그 파ì¼ì˜ 최대 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ìµœì†Œê°’ì€ 0ì´ë©°, ê¸°ë³¸ê°’ì€ **INT_MAX** (2,147,483,647)ì´ë‹¤. CUBRID 설치 시 **cubrid.conf** ì—는 0으로 ì„¤ì •ë˜ì–´ 있다. ì´ íŒŒë¼ë¯¸í„°ëŠ” **force_remove_log_archives** ì˜ ì„¤ì •ì— ë”°ë¼ ë™ìž‘ì´ ë‹¬ë¼ì§ˆ 수 있다. 하지만 í™œì„±í™”ëœ íŠ¸ëžœìžì…˜ì´ 기존 ë³´ê´€ 로그 파ì¼ì„ ì—¬ì „ížˆ ì°¸ì¡°í•˜ê³ ìžˆë‹¤ë©´, 해당 ë³´ê´€ 로그 파ì¼ì€ ì‚ì œë˜ì§€ 않는다. 즉, ì–´ë–¤ 트랜ìžì…˜ì´ 첫 번째 ë³´ê´€ 로그 파ì¼ì´ ìƒì„±ë˜ëŠ” 시ì ì—서 시작ë˜ì–´ 다섯 번째 ë³´ê´€ 로그 파ì¼ì´ ìƒì„±ë˜ëŠ” 시ì ê¹Œì§€ë„ ì¢…ë£Œë˜ì§€ 않았다면 첫 번째 ë³´ê´€ 로그 파ì¼ì€ ì‚ì œë˜ì§€ 않는다. ê·¸ë¦¬ê³ ë³´ê´€ 로그 파ì¼ì˜ ì •ë³´ê°€ ë°ì´í„°ë² ì´ìФ ë³¼ë¥¨ì— ì•„ì§ ë°˜ì˜ë˜ì–´ 있지 ì•Šì€ ê²½ìš°ì—ë„ í•´ë‹¹ ë³´ê´€ 로그 파ì¼ì€ ì‚ì œë˜ì§€ 않는다. (ì²´í¬í¬ì¸íŠ¸ê°€ ë°œìƒí•œ ì´í›„ì˜ ë³´ê´€ 로그는 ë°ì´í„° 버í¼ì˜ ìˆ˜ì •ëœ íŽ˜ì´ì§€ ì •ë³´ë¥¼ ê°€ì§€ê³ ìžˆìœ¼ë¯€ë¡œ ë°ì´í„°ë² ì´ìФ 복구를 위해 필요하다.) DB ìš´ì˜ ì¤‘ì— **log_max_archives**\ ì˜ ê°’ì„ ë™ì 으로 변경하는 경우, ë³€ê²½ëœ ê°’ì€ ìƒˆë¡œìš´ ë³´ê´€ 로그 파ì¼ì´ ìƒì„±ë 때 ì ìš©ëœë‹¤. 예를 들어, 해당 ê°’ì„ 10ì—서 5로 변경한 경우, 새로운 ë³´ê´€ 로그 파ì¼ì´ ìƒì„±ë˜ëŠ” 시ì ì— ì˜¤ëž˜ëœ íŒŒì¼ 5개를 ì‚ì œí•œë‹¤. CUBRID HA í™˜ê²½ì„ êµ¬ì¶•í•˜ê³ ìž í•˜ëŠ” 사용ìžëŠ” :ref:`ha-configuration`\ ì„ ì°¸ê³ í•œë‹¤. .. note:: 2008 R4.3 ì´í•˜ ë²„ì „ê³¼ 9.1 ë²„ì „ì—서 **log_max_archives**\ 는 HA 환경ì—서 ë³µì œ 로그 파ì¼ì˜ 최대 ë³´ì¡´ 개수를 ì§€ì •í• ë•Œë„ ì‚¬ìš©ë˜ì—ˆìœ¼ë‚˜, 2008 R4.4와 9.2 ì´ìƒ ë²„ì „ì—서는 cubrid_ha.confì˜ :ref:`ha_copy_log_max_archives <ha_copy_log_max_archives>` 파ë¼ë¯¸í„°ê°€ ê·¸ ì—í• ì„ ëŒ€ì‹ í•˜ê²Œ ë˜ì—ˆë‹¤. **log_trace_flush_time** ì´ íŒŒë¼ë¯¸í„°ì— ì„¤ì •í•œ 시간보다 로그 플러싱 ì‹œê°„ì´ ì˜¤ëž˜ 걸리는 경우 해당 ì´ë²¤íŠ¸ê°€ ë°ì´í„°ë² ì´ìФ 서버 ë¡œê·¸ì— ê¸°ë¡ëœë‹¤. 기ë¡ë˜ëŠ” ì •ë³´ì˜ ì˜ˆëŠ” 다ìŒê³¼ 같다. :: 03/18/14 10:20:45.889 - LOG_FLUSH_THREAD_WAIT total flush count: 1 page(s) total flush time: 310 ms time waiting for log writer: 308 ms last log writer info client: DBA@cdbs037.cub|copylogdb(15312) time spent by log writer: 308 ms * LOG_FLUSH_THREAD_WAIT: ì´ë²¤íЏ ì´ë¦„ * total flush count: ì´ë²¤íЏ ë°œìƒ ë‹¹ì‹œ 플러시(flush)한 페ì´ì§€ 수 * total flush time: ì´ í”ŒëŸ¬ì‹œ 소요 시간 * time waiting for log writer: LFT(Log Flushing Thread)ê°€ LWT(Log Writer Thread)를 대기한 시간 * last log writer info * DBA@cdbs037.cub|copylogdb(15312): LFT를 대기하게 한 LWT와 ê´€ë ¨ëœ copylogdb ì •ë³´ <사용ìž@호스트명|í´ë¼ì´ì–¸íŠ¸ëª…(pid)> * time spent by log writer: LWTì—서 ì¸¡ì •í•œ LWT 소요 시간(ì¼ë°˜ì 으로 time waiting for log writer와 ë™ì¼) **max_flush_size_per_second** **max_flush_size_per_second**\ 는 버í¼ë¡œë¶€í„° 디스í¬ë¡œ ë‚´ë ¤ì“°ê¸°(flush) ìž‘ì—…ì„ ìˆ˜í–‰í• ë•Œ, ë‚´ë ¤ì“°ê¸°í• ìµœëŒ€ 용량 (flush capacity)ì„ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 10,000 * :ref:`db_page_size <dpg>` (db_page_sizeê°€ 16Kì´ë©´ **156.25M**)ì´ë‹¤. 즉, ì´ íŒŒë¼ë¯¸í„° ì„¤ì •ì„ í†µí•´ 1초당 ë‚´ë ¤ì“°ê¸°í• ìµœëŒ€ ìš©ëŸ‰ì„ ì œì–´í•˜ì—¬, íŠ¹ì • 시ì ì— I/O 부하가 집중ë˜ëŠ” 현ìƒì„ ë°©ì§€í• ìˆ˜ 있다. 만약, íŠ¹ì • 시ì ì— **INSERT** ë˜ëŠ” **UPDATE** ì—°ì‚°ì´ ì§‘ì¤‘ë˜ì–´ ì´ íŒŒë¼ë¯¸í„°ì— ì˜í•´ ì„¤ì •ëœ ìµœëŒ€ ìš©ëŸ‰ì— ë„달하면, 로그 페ì´ì§€ë§Œ ë‚´ë ¤ì“°ê¸°ë¥¼ ìˆ˜í–‰í•˜ê³ ë°ì´í„° 페ì´ì§€ëŠ” ë” ì´ìƒ 디스í¬ë¡œ ë‚´ë ¤ì“°ì§€ 않는다. ë”°ë¼ì„œ, ì´ íŒŒë¼ë¯¸í„°ëŠ” 서비스 í™˜ê²½ì˜ ì›Œí¬ë¡œë“œë¥¼ ê³ ë ¤í•˜ì—¬ ì ì ˆí•œ ê°’ì„ ì„¤ì •í•´ì•¼ 한다. **remove_log_archive_interval_in_secs** **log_max_archives**\ì—서 ì§€ì •í•œ 개수를 초과한 ë³´ê´€ 로그는 ì²´í¬í¬ì¸íŠ¸ê°€ ë°œìƒí•˜ëŠ” 시ì ì— ì‚ì œí•˜ê²Œ ë˜ëŠ”ë°, ë°ì´í„° 마ì´ê·¸ë ˆì´ì…˜ì´ë‚˜ 대량 배치와 ê°™ì€ ìž‘ì—…ì´ ìˆ˜í–‰ë˜ëŠ” 경우 ë§Žì€ ì–‘ì˜ ë³´ê´€ 로그가 쌓였다가 ì¼ì‹œì— 지워지는 ì¼ì´ ìžì£¼ ë°œìƒí•œë‹¤. ì´ë ‡ê²Œ íŒŒì¼ ì‚ì œê°€ í•œêº¼ë²ˆì— ë°œìƒí•œë‹¤ë©´ ë°ì´í„°ë² ì´ìФ ì„œë²„ì˜ I/O 부하가 급격히 ì¦ê°€í•˜ë¯€ë¡œ, ì´ ë¶€ë‹´ì„ ì¤„ì¼ í•„ìš”ê°€ 있다. **remove_log_archive_interval_in_secs** 파ë¼ë¯¸í„°ëŠ” ì´ëŸ¬í•œ ë¶€ë‹´ì„ ì¤„ì´ê³ ìž ë³´ê´€ ë¡œê·¸ì˜ ì‚ì œë¥¼ 천천히 진행하게 한다. ê¸°ë³¸ê°’ì€ 0(ì´ˆ)ì´ë‹¤. 대량 배치와 ê°™ì€ ìž‘ì—…ì´ ìžì£¼ ë°œìƒí•˜ëŠ” ìƒí™©ì—서, ë””ìŠ¤í¬ ê³µê°„ì´ ì¶©ë¶„í•˜ë‹¤ë©´ ì‚ì œ ê°„ê²©ì„ 60ì´ˆ ì •ë„로 줄 ê²ƒì„ ê¶Œìž¥í•œë‹¤. **sync_on_flush_size** **sync_on_flush_size**\ 는 버í¼ë¡œë¶€í„° ë°ì´í„° 페ì´ì§€ ë° ë¡œê·¸ 페ì´ì§€ë¥¼ ë‚´ë ¤ì“°ê¸°í•œ 후, ìš´ì˜ ì‹œìŠ¤í…œì˜ FILE I/O와 ë™ê¸°í™”를 수행하는 주기를 페ì´ì§€ 단위로 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 200 * :ref:`db_page_size <dpg>` (db_page_sizeê°€ 16Kì´ë©´ **3.125M**)ì´ë‹¤. 즉, 200페ì´ì§€ë§Œí¼ ë‚´ë ¤ì“°ê¸° ìž‘ì—…ì´ ìˆ˜í–‰ë 때마다 CUBRID 서버는 ìš´ì˜ ì²´ì œì˜ FILE I/O와 ë™ê¸°í™”를 수행한다. I/O 부하와 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ì´ë‹¤. **ddl_audit_log** **ddl_audit_log** 로깅 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ no ì´ë‹¤. ì´ ê°’ì´ yes로 ì„¤ì •ë˜ë©´, ëª¨ë“ DDLì´ ìˆ˜í–‰ ë 때 로그 파ì¼ì— ì €ìž¥ëœë‹¤. 로그 íŒŒì¼ ì €ìž¥ 경로는 $CUBRID/log/ddl_audit ì´ë©°, ê°ê°ì˜ DDL AUDIT 로그 íŒŒì¼ ì´ë¦„ì€ :doc:`/admin/ddl_audit` 를 참조 한다. **ddl_audit_log_size** **ddl_audit_log_size** 는 DDL AUDIT 로그 파ì¼ì˜ 최대 í¬ê¸°ë¥¼ ì§€ì •í•œë‹¤. 로그 파ì¼ì´ ì§€ì •í•œ í¬ê¸°ë³´ë‹¤ 커지면 DDL AUDIT 로그 파ì¼ì— .bak 를 ë¶™ì¸ í˜•ì‹ì˜ ì´ë¦„으로 ë°±ì—…ëœ í›„ 새 파ì¼ì— 로그가 기ë¡ëœë‹¤. í¬ê¸° ì„¤ì • ê°’ ë’¤ì— B, K, M, Gì˜ í¬ê¸° 단위를 ì‚¬ìš©í• ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes ê·¸ë¦¬ê³ Gigabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 10M ì´ê³ , 최대 2G까지 ì„¤ì •ê°€ëŠ¥í•˜ë‹¤. .. _transaction-parameters: 트랜ìžì…˜ 처리 ê´€ë ¨ 파ë¼ë¯¸í„° --------------------------- 다ìŒì€ 트랜ìžì…˜ì˜ 커밋 성능 í–¥ìƒì„ 위한 파ë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +---------------------------------+--------+---------+---------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=================================+========+=========+=========+=========+ | async_commit | bool | no | | | +---------------------------------+--------+---------+---------+---------+ | group_commit_interval_in_msecs | msec | 0 | 0 | | +---------------------------------+--------+---------+---------+---------+ **async_commit** **async_commit**\ ì€ ë¹„ë™ê¸°ì‹ 커밋 ê¸°ëŠ¥ì„ í™œì„±í™”ì‹œí‚¤ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì¸ **no**\ 로 ì„¤ì •í•˜ë©´ 비ë™ê¸°ì‹ ì»¤ë°‹ì„ ìˆ˜í–‰í•˜ì§€ ì•Šê³ , yes로 ì„¤ì •í•˜ë©´ 비ë™ê¸°ì‹ ì»¤ë°‹ì„ ìˆ˜í–‰í•œë‹¤. 비ë™ê¸°ì‹ 커밋ì´ëž€ 커밋 로그가 디스í¬ì— 플러시ë˜ê¸° ì „ì— í´ë¼ì´ì–¸íЏì—게 ì»¤ë°‹ì„ ì™„ë£Œ ì²˜ë¦¬í•˜ê³ , 로그 플러시 ìŠ¤ë ˆë“œ(LFT)ê°€ 로그 플러시를 백그ë¼ìš´ë“œì—서 수행하여 커밋 ìž‘ì—…ì˜ ì„±ëŠ¥ì„ í–¥ìƒì‹œí‚¤ëŠ” 기능ì´ë‹¤. 로그 플러시가 수행ë˜ê¸° ì „ì— ë°ì´í„°ë² ì´ìФ ì„œë²„ì— ìž¥ì• ê°€ ë°œìƒí•˜ë©´ ì´ë¯¸ 커밋 ì™„ë£Œëœ íŠ¸ëžœìžì…˜ì„ ë³µêµ¬í• ìˆ˜ 없으므로 주ì˜í•œë‹¤. **group_commit_interval_in_msecs** **group_commit_interval_in_msecs**\ ì€ ê·¸ë£¹ ì»¤ë°‹ì„ ìˆ˜í–‰í•˜ëŠ” ê°„ê²©ì„ ë°€ë¦¬ì´ˆ(mesc) 단위로 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì¸ **0** 으로 ì„¤ì •ë˜ë©´ 그룹 ì»¤ë°‹ì„ ìˆ˜í–‰í•˜ì§€ 않는다. 그룹 커밋ì´ëž€ ì§€ì •ëœ ì‹œê°„ë™ì•ˆ ë°œìƒí•œ 여러 ë²ˆì˜ ì»¤ë°‹ì„ ê·¸ë£¹ìœ¼ë¡œ 취합하여 커밋 로그가 ë™ì‹œì— 디스í¬ì— 플러시ë˜ë„ë¡ í•˜ì—¬ 커밋 ìž‘ì—…ì˜ ì„±ëŠ¥ì„ í–¥ìƒì‹œí‚¤ëŠ” 기능ì´ë‹¤. .. _stmt-type-parameters: 구문/타입 ê´€ë ¨ 파ë¼ë¯¸í„° ----------------------- 다ìŒì€ CUBRIDì—서 ì§€ì›í•˜ëŠ” SQL 구문 ë° ë°ì´í„° íƒ€ìž…ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +---------------------------------+--------+------------+------------+------------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=================================+========+============+============+============+ | add_column_update_hard_default | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | alter_table_change_type_strict | bool | yes | | | +---------------------------------+--------+------------+------------+------------+ | allow_truncated_string | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | ansi_quotes | bool | yes | | | +---------------------------------+--------+------------+------------+------------+ | block_ddl_statement | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | block_nowhere_statement | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | compat_numeric_division_scale | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | create_table_reuseoid | bool | yes | | | +---------------------------------+--------+------------+------------+------------+ | cte_max_recursions | int | 2,000 | 2 | 1,000,000 | +---------------------------------+--------+------------+------------+------------+ | default_week_format | int | 0 | | | +---------------------------------+--------+------------+------------+------------+ | group_concat_max_len | byte | 1,024 | 4 | INT_MAX | +---------------------------------+--------+------------+------------+------------+ | intl_check_input_string | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | intl_collation | string | | | | +---------------------------------+--------+------------+------------+------------+ | intl_date_lang | string | | | | +---------------------------------+--------+------------+------------+------------+ | intl_number_lang | string | | | | +---------------------------------+--------+------------+------------+------------+ | json_max_array_idx | int | 65,536 | 1,024 | 1,048,576 | +---------------------------------+--------+------------+------------+------------+ | no_backslash_escapes | bool | yes | | | +---------------------------------+--------+------------+------------+------------+ | only_full_group_by | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | oracle_compat_number_behavior | 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 | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | string_max_size_bytes | byte | 1,048,576 | 64 | 33,554,432 | +---------------------------------+--------+------------+------------+------------+ | unicode_input_normalization | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | unicode_output_normalization | bool | no | | | +---------------------------------+--------+------------+------------+------------+ | update_use_attribute_references | bool | no | | | +---------------------------------+--------+------------+------------+------------+ **add_column_update_hard_default** **add_column_update_hard_default**\ 는 **ALTER TABLE ... ADD COLUMN** ì ˆë¡œ 새로운 ì¹¼ëŸ¼ì„ ì¶”ê°€í• ë•Œ ì´ ì¹¼ëŸ¼ì— ìž…ë ¥í• ê°’ì„ ê³ ì • 기본값(hard_default)으로 ì œê³µí• ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **no**\ ì´ë‹¤. **NOT NULL** ì œì•½ ì¡°ê±´ì´ ìžˆê³ **DEFAULT** ì œì•½ ì¡°ê±´ì´ ì—†ì„ ë•Œ ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **yes**\ ì´ë©´ ì¹¼ëŸ¼ì˜ ìƒˆë¡œìš´ ìž…ë ¥ê°’ì„ ê³ ì • 기본값(hard default value)으로 ìž…ë ¥í•˜ë©°, **no**\ ì´ë©´ ì—러를 반환한다. ì´ íŒŒë¼ë¯¸í„°ì˜ ê°’ì´ **yes**\ ì¼ ë•Œ ì¶”ê°€í•˜ë ¤ëŠ” ì¹¼ëŸ¼ì˜ íƒ€ìž…ì— ê³ ì • ê¸°ë³¸ê°’ì´ ì—†ìœ¼ë©´ ì—러를 반환한다. ê° íƒ€ìž…ë³„ ê³ ì • ê¸°ë³¸ê°’ì— ëŒ€í•´ì„œëŠ” **ALTER TABLE** ë¬¸ì˜ :ref:`change-column`\ ì„ ì°¸ê³ í•œë‹¤. .. code-block:: sql SET SYSTEM PARAMETERS 'add_column_update_hard_default=yes'; CREATE TABLE tbl (i int); INSERT INTO tbl VALUES (1),(2); ALTER TABLE tbl ADD COLUMN j INT NOT NULL; SELECT * FROM tbl; :: i j ========================= 1 0 2 0 .. code-block:: sql SET SYSTEM PARAMETERS 'add_column_update_hard_default=no'; CREATE TABLE tbl (i INT); INSERT INTO tbl VALUES (1),(2); ALTER TABLE tbl ADD COLUMN j INT NOT NULL; :: ERROR: Cannot add NOT NULL constraint for attribute "j": there are existing NULL values for this attribute. **alter_table_change_type_strict** **alter_table_change_type_strict**\는 타입 ë³€ê²½ì— ë”°ë¥¸ 해당 칼럼 ê°’ë“¤ì˜ ë³€í™˜ 허용 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **yes**\ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **no**\ì´ë©´ ì¹¼ëŸ¼ì˜ íƒ€ìž… 변경ì´ë‚˜ **NOT NULL** ì œì•½ ì¡°ê±´ì„ ì¶”ê°€í• ë•Œ ê°’ì˜ ë³€ê²½ì´ ë°œìƒí• 수 있으며, **yes**\ì´ë©´ ê°’ì˜ ë³€ê²½ì´ ë°œìƒí•˜ì§€ 않는다. ìžì„¸í•œ ë‚´ìš©ì€ **ALTER TABLE** ë¬¸ì˜ :ref:`change-column` ì„ ì°¸ê³ í•œë‹¤. **allow_truncated_string** **allow_truncated_string**\ì€ INSERT ë˜ëŠ” UPDATE 질ì˜ì— 사용ë˜ëŠ” 문ìžì—´ ìž‘ì—…ì— ë”°ë¥¸ 문ìžì—´ ê°’ì˜ ìžë¥´ê¸°ë¥¼ í—ˆìš©í• ì§€ 여부를 ì„¤ì •í•˜ëŠ” 매개 파ë¼ë¯¸í„°ì´ë©° ê¸°ë³¸ê°’ì€ **no**\ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **no**\로 ì„¤ì •ë˜ë©´ INSERT ë˜ëŠ” UPDATE 질ì˜ì™€ ê´€ë ¨ëœ ëª¨ë“ ë¬¸ìžì—´ì— 대해 문ìžì—´ ê°’ì´ ìž˜ë¦¬ëŠ” ê²ƒì„ í—ˆìš©í•˜ì§€ 않는다. 다만, SELECT 질ì˜ì™€ ê´€ë ¨ëœ ë¬¸ìžì—´ì€ ì´ ì„¤ì •ê³¼ ìƒê´€ì—†ì´ 문ìžì—´ ê°’ì´ ìž˜ë¦´ 수 있다. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **yes**\로 ì„¤ì •ë˜ë©´ (INSERT/UPDATE/SELECT) ì§ˆì˜ ìœ í˜•ì— ê´€ê³„ì—†ì´ ë¬¸ìžì—´ ê°’ì´ ìž˜ë¦¬ëŠ” ê²ƒì„ í—ˆìš©í•œë‹¤. **ansi_quotes** **ansi_quotes** 는 ì‹ë³„ìž ì²˜ë¦¬ë¥¼ 위한 기호 ë˜ëŠ” 문ìžì—´ì„ ê°ì‹¸ëŠ” ê¸°í˜¸ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ yesì´ë©´ í°ë”°ì˜´í‘œëŠ” ì‹ë³„ìž ì²˜ë¦¬ 기호로 í•´ì„ë˜ê³ , ìž‘ì€ë”°ì˜´í‘œëŠ” 문ìžì—´ 처리 기호로 í•´ì„ëœë‹¤. ì´ ê°’ì´ noì´ë©´ í° ë”°ì˜´í‘œì™€ ìž‘ì€ ë”°ì˜´í‘œ ëª¨ë‘ ë¬¸ìžì—´ 처리 기호로 í•´ì„ëœë‹¤. .. _block_ddl_statement: **block_ddl_statement** **block_ddl_statement** 는 í´ë¼ì´ì–¸íŠ¸ê°€ 수행하는 ë°ì´í„° ì •ì˜ë¬¸(Data Definition Language, DDL)ì„ ì œí•œí•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ no로 ì„¤ì •í•˜ë©´ 해당 í´ë¼ì´ì–¸íŠ¸ì˜ ë°ì´í„° ì •ì˜ë¬¸ ìˆ˜í–‰ì„ í—ˆìš©í•˜ë©°, yes로 ì„¤ì •í•˜ë©´ 해당 í´ë¼ì´ì–¸íŠ¸ì˜ ë°ì´í„° ì •ì˜ë¬¸ ìˆ˜í–‰ì„ í—ˆìš©í•˜ì§€ 않는다. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. .. _block_nowhere_statement: **block_nowhere_statement** **block_nowhere_statement** 는 í´ë¼ì´ì–¸íŠ¸ê°€ 수행하는 ì¡°ê±´ì ˆ(**WHERE**)ì´ ì—†ëŠ” **UPDATE** / **DELETE** ë¬¸ì„ ì œí•œí•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ **no** 로 ì„¤ì •í•˜ë©´ 해당 í´ë¼ì´ì–¸íŠ¸ì˜ ì¡°ê±´ì ˆì´ ì—†ëŠ” **UPDATE** / **DELETE** ë¬¸ì„ í—ˆìš©í•˜ë©°, yes로 ì„¤ì •í•˜ë©´ 해당 í´ë¼ì´ì–¸íŠ¸ì˜ ì¡°ê±´ì ˆì´ ì—†ëŠ” **UPDATE** / **DELETE** ë¬¸ì˜ ìˆ˜í–‰ì„ í—ˆìš©í•˜ì§€ 않는다. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. **compat_numeric_division_scale** **compat_numeric_division_scale** ì€ ë‚˜ëˆ—ì…ˆ ì—°ì‚°ì˜ ê²°ê³¼ ê°’(몫)ì— ëŒ€í•˜ì—¬ 소수ì ì´í•˜ ìžë¦¿ìˆ˜ë¥¼ 몇 ìžë¦¬ê¹Œì§€ í‘œì‹œí• ê²ƒì¸ê°€ë¥¼ ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ **no** 로 ì„¤ì •í•˜ë©´ ëª«ì˜ ì†Œìˆ˜ì ì´í•˜ ìžë¦¿ìˆ˜ê°€ 9개가 ë˜ê³ , **yes** 로 ì„¤ì •í•˜ë©´ ëª«ì˜ ì†Œìˆ˜ì ì´í•˜ ìžë¦¿ìˆ˜ê°€ 피연산ìžì˜ 소수ì ì´í•˜ ìžë¦¿ìˆ˜ì— ë”°ë¼ ê²°ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. **create_table_reuseoid** **create_table_reuseoid** 는 í…Œì´ë¸” ìƒì„±ì‹œ í…Œì´ë¸” ì˜µì…˜ì„ ìƒëžµí• 경우 **REUSE_OID** ë˜ëŠ” **DONT_REUSE_OID** ì˜µì…˜ì„ ì‚¬ìš©í• ì§€ë¥¼ ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ **yes** 로 ì„¤ì •í•˜ë©´ REUSE_OID í…Œì´ë¸” ì˜µì…˜ì„ ê°€ì§€ê³ í…Œì´ë¸”ì„ ìƒì„±í•œë‹¤. ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. REUSE_OIDê³¼ DONT_REUSE_OIDì— ëŒ€í•œ ìžì„¸í•œ ì„¤ëª…ì€ :ref:`reuse-oid` ê³¼ :ref:`dont-reuse-oid` 를 ì°¸ê³ í•œë‹¤. **cte_max_recursions** **cte_max_recursions** 는 CTE(Common Table Expressions) 질ì˜ë¬¸ì˜ 반복ë˜ëŠ” ë¶€ë¶„ì„ ìˆ˜í–‰í• ë•Œ 최대 반복 횟수를 ì œí•œí•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” 무한 반복과 임시 ê²°ê³¼ì˜ í¬ê¸°ë¡œ ì¸í•´ ë°œìƒí• 수 있는 ì´ìŠˆë¥¼ 예방한다. **default_week_format** **default_week_format**\ ì€ :func:`WEEK` 함수 *mode* ì¸ìžì˜ ê¸°ë³¸ê°’ì„ ì„¤ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **0**\ ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :func:`WEEK` 함수를 ì°¸ê³ í•œë‹¤. **group_concat_max_len** **group_concat_max_len** ì€ :func:`GROUP_CONCAT` í•¨ìˆ˜ì˜ ë¦¬í„´ ê°’ì˜ í¬ê¸°ë¥¼ ì œí•œí•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ **1,024** ë°”ì´íЏì´ë©°, ìµœì†Œê°’ì€ 4 ë°”ì´íЏ, 최대값ì€INT_MAX ë°”ì´íЏ(약2G)ì´ë‹¤. :func:`GROUP_CONCAT` í•¨ìˆ˜ì˜ ê²°ê³¼ê°€ ì œí•œì„ ë„˜ìœ¼ë©´ 오류가 반환ëœë‹¤. ì´ í•¨ìˆ˜ëŠ” **string_max_size_bytes** 파ë¼ë¯¸í„°ì˜ ì˜í–¥ì„ 받으며, **group_concat_max_len** ê°’ì„ **string_max_size_bytes** 보다 í¬ê²Œ ì„¤ì •í•œ 경우 :func:`GROUP_CONCAT` 결과가 **string_max_size_bytes** ê°’ì„ ì´ˆê³¼í•˜ë©´ 오류가 ë°œìƒí•œë‹¤. **intl_check_input_string** **intl_check_input_string**\ ì€ ìž…ë ¥ë˜ëŠ” 문ìžì—´ì´ 사용하는 문ìžì…‹ì— 맞게 ìž…ë ¥ë˜ëŠ”ì§€ì— ëŒ€í•œ 검사 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. 예를 들어, ì´ ê°’ì´ noì´ê³ 문ìžì…‹ì´ UTF-8ì¼ ë•Œ UTF-8 ë°”ì´íЏ 순서(byte sequence)ì— ë§žì§€ 않는 ë°ì´í„°ê°€ 들어오는 경우 ë¹„ì •ìƒì ì¸ ë™ìž‘ì„ ë³´ì´ê±°ë‚˜ 심하면 ë°ì´í„°ë² ì´ìФ 서버 í˜¹ì€ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ë¹„ì •ìƒ ì¢…ë£Œë ìˆ˜ë„ ìžˆë‹¤. 하지만 ì´ëŸ¬í•œ ë¬¸ì œê°€ 없다는 ê²ƒì´ ë³´ìž¥ëœë‹¤ë©´ 검사하지 않는 ê²ƒì´ ì„±ëŠ¥ìƒ ì¢€ë” ìœ ë¦¬í•˜ë‹¤. UTF-8ê³¼ EUC-KRë§Œì´ ê²€ì‚¬ 대ìƒì´ë©°, ISO-8859-1ì€ í•œ ë°”ì´íЏ ì¸ì½”딩ì´ê³ ëª¨ë“ ë°”ì´íŠ¸ê°€ ìœ íš¨í•˜ë¯€ë¡œ ê²€ì‚¬í• í•„ìš”ê°€ 없다. **intl_collation** **intl_collation** ì€ íŠ¹ì • ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì— ëŒ€í•´ ì½œë ˆì´ì…˜ ì´ë¦„ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ì´ íŒŒë¼ë¯¸í„°ë¥¼ ì§€ì •í•˜ë©´ "SET NAMES" ë¬¸ì„ í†µí•´ ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì˜ ì½œë ˆì´ì…˜ì„ 변경하는 것과 ê°™ì€ ë™ìž‘ì„ ìˆ˜í–‰í•œë‹¤. ì½œë ˆì´ì…˜ ì§€ì •ì€ ë¬¸ìžì…‹ì„ í¬í•¨í•œë‹¤. ì•„ëž˜ì˜ ë‘ ë¬¸ìž¥ì€ ê°™ì€ ë™ìž‘ì„ ìˆ˜í–‰í•œë‹¤. .. code-block:: sql SET NAMES utf8; SET SYSTEM PARAMETERS 'intl_collation=utf8_bin'; **intl_collation** ì˜ ê°’ìœ¼ë¡œ ì‚¬ìš©í• ìˆ˜ 있는 ê°’ì€ :ref:`collation-setting` ì„ ì°¸ê³ í•œë‹¤. **intl_date_lang** **intl_date_lang** ì€ **TIME**, **DATE**, **DATETIME**, **TIMESTAMP** íƒ€ìž…ì˜ ê°’ì„ ìž…ë ¥ ë˜ëŠ” ì¶œë ¥í•˜ëŠ” í•¨ìˆ˜ì˜ ì¸ìžë¡œ 언어 ì´ë¦„ì´ ìƒëžµë˜ëŠ” 경우, 문ìžì—´ì˜ ì§€ì—í™”ëœ(localized) 캘린ë”(ì›” ì´ë¦„ê³¼ ìš”ì¼ ì´ë¦„, ì˜¤ì „/오후 ì´ë¦„) 형ì‹ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì‚¬ìš©í• ìˆ˜ 있는 ê°’ì€ ë‹¤ìŒê³¼ 같다. 단, ì´ ê°’ë“¤ì„ ëª¨ë‘ ì‚¬ìš©í•˜ë ¤ë©´ ë‚´ìž¥ëœ ë¡œìº˜(locale)ì„ ì œì™¸í•œ 나머지 ë¡œìº˜ì— ëŒ€í•´ì„œëŠ” ì›í•˜ëŠ” 로캘 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì„¤ì •í•´ì•¼ 한다. 로캘 ì„¤ì •ì— ëŒ€í•´ì„œëŠ” :ref:`locale-setting` ì„ ì°¸ê³ í•œë‹¤. +--------------+-----------------------------+ | 언어 | ì–¸ì–´ì˜ ë¡œìº˜ ì´ë¦„ | +==============+=============================+ | ì˜ì–´ | en_US | +--------------+-----------------------------+ | ë…ì¼ì–´ | de_DE | +--------------+-----------------------------+ | 스페ì¸ì–´ | es_ES | +--------------+-----------------------------+ | 프랑스어 | fr_FR | +--------------+-----------------------------+ | ì´íƒœë¦¬ì–´ | it_IT | +--------------+-----------------------------+ | ì¼ë³¸ì–´ | ja_JP | +--------------+-----------------------------+ | 캄보디아어 | km_KH | +--------------+-----------------------------+ | 한êµì–´ | ko_KR | +--------------+-----------------------------+ | 터키어 | tr_TR | +--------------+-----------------------------+ | ë² íŠ¸ë‚¨ì–´ | vi_VN | +--------------+-----------------------------+ | 중êµì–´ | zh_CN | +--------------+-----------------------------+ | 루마니아어 | ro_RO | +--------------+-----------------------------+ ì§€ì •ëœ ì–¸ì–´ì˜ ìº˜ë¦°ë” í˜•ì‹ì— ë”°ë¼ ìž…ë ¥ 문ìžì—´ì„ ì¸ì‹í•˜ëŠ” 함수는 다ìŒê³¼ 같다. * :func:`TO_DATE` * :func:`TO_TIME` * :func:`TO_DATETIME` * :func:`TO_TIMESTAMP` * :func:`STR_TO_DATE` ì§€ì •ëœ ì–¸ì–´ì˜ ìº˜ë¦°ë” í˜•ì‹ì— ë”°ë¼ ë¬¸ìžì—´ì„ ì¶œë ¥í•˜ëŠ” 함수는 다ìŒê³¼ 같다. * :func:`TO_CHAR` * :func:`DATE_FORMAT` * :func:`TIME_FORMAT` **intl_number_lang** **intl_number_lang** ì€ ë¬¸ìžì—´ì„ 숫ìžë¡œ, ë˜ëŠ” 숫ìžë¥¼ 문ìžì—´ë¡œ 변환하는 함수들ì—서 ìž…ë ¥ë˜ê±°ë‚˜ ì¶œë ¥ë˜ëŠ” 문ìžì—´ì— ìˆ«ìž í˜•ì‹ì„ ë¶€ì—¬í• ë•Œ ì ìš©í• ë¡œìº˜ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 숫ìžì— 대해 ì§€ì—í™”ë˜ëŠ” ê²ƒë“¤ì€ ìžë¦¿ìˆ˜ 구분 기호와 소수ì 기호ì´ë‹¤. ì¼ë°˜ì 으로는 쉼표(,)와 마침표(.)ê°€ ì“°ì´ëŠ”ë°, ë¡œìº˜ì— ë”°ë¼ ì„œë¡œ 바뀔 수 있다. 예를 들어, ìˆ«ìž 1000.12(천 소수ì ì´í•˜ ì¼ì´)는 ëŒ€ë¶€ë¶„ì˜ ë¡œìº˜ì—서는 1,000.12로 ì“°ì´ëŠ” 반면, tr_TR 로캘ì—서는 1.000,12로 ì“°ì¸ë‹¤. ì§€ì •ëœ ì–¸ì–´ì˜ ìˆ«ìž í˜•ì‹ì— ë”°ë¼ ìž…ë ¥ 문ìžì—´ì„ ì¸ì‹í•˜ëŠ” 함수는 다ìŒê³¼ 같다. * :func:`TO_NUMBER` ì§€ì •ëœ ì–¸ì–´ì˜ ìˆ«ìž í˜•ì‹ì— ë”°ë¼ ë¬¸ìžì—´ì„ ì¶œë ¥í•˜ëŠ” 함수는 다ìŒê³¼ 같다. * :func:`FORMAT` * :func:`TO_CHAR` **json_max_array_idx** **json_max_array_idx** 는 JSON 함수가 ë°°ì—´ì˜ í¬ê¸°ë¥¼ ë³€ê²½í• ë•Œ í¬ê¸°ì˜ ì œí•œì„ ì„¤ì •í•˜ëŠ”ë° ì‚¬ìš©ë˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 만약 매우 í° ì¸ë±ìФ ê°’ì„ **JSON_ARRAY_INSERT** 와 ê°™ì€ í•¨ìˆ˜ì— ìž˜ëª» ìž…ë ¥í•œë‹¤ë©´, JSON 문서는 ë§Žì€ ë©”ëª¨ë¦¬ì™€ ë””ìŠ¤í¬ ê³µê°„ì„ ì°¨ì§€í• ê²ƒì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” ì´ëŸ¬í•œ ìœ„í—˜ì„ ì œí•œí•˜ê¸° 위해 사용한다. 문ìžì—´ë¡œë¶€í„° ìƒì„±ëœ ë°°ì—´ì—는 ì´ ì œí•œì´ ì ìš©ë˜ì§€ 않는다. **no_backslash_escapes** **no_backslash_escapes** ì€ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¡œ 백슬래시(\\) 사용 ì—¬ë¶€ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **no** ì´ë©´ 백슬래시(\\)ê°€ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¡œ 사용ë˜ë©°, **yes** ì´ë©´ 백슬래시는 ì¼ë°˜ 문ìžë¡œ 사용ëœë‹¤. 예를 들어, ì´ ê°’ì´ **no** ì¼ ë•Œ "\\n"ì€ ê°œí–‰(new line) 문ìžë¥¼ ì˜ë¯¸í•œë‹¤. 그러나 ì´ ê°’ì´ **yes** ì´ë©´ "\\n"ì€ "\\\"ê³¼ "n" ë‘ ê°œì˜ ë¬¸ìžë¥¼ ì˜ë¯¸í•œë‹¤. 백슬래시가 ì´ìŠ¤ì¼€ì´í”„ 문ìžë¡œ 사용ë˜ëŠ” ê²½ìš°ì— ëŒ€í•œ ìžì„¸í•œ ì„¤ëª…ì€ :ref:`escape-characters` 를 ì°¸ê³ í•œë‹¤. **only_full_group_by** **only_full_group_by**\ 는 **GROUP BY** ì ˆ ì‚¬ìš©ì— ê´€í•œ í™•ìž¥ëœ ë¬¸ë²•ì˜ ì‚¬ìš© 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ noì´ë©´ í™•ìž¥ëœ ë¬¸ë²•ì´ ì ìš©ë˜ë¯€ë¡œ **GROUP BY** ì ˆì— ëª…ì‹œë˜ì§€ ì•Šì€ ì¹¼ëŸ¼ì„ **SELECT** 칼럼 ë¦¬ìŠ¤íŠ¸ì— ëª…ì‹œí• ìˆ˜ ìžˆê³ , ì´ ê°’ì´ yesì´ë©´ **GROUP BY** ì ˆì— ëª…ì‹œëœ ì¹¼ëŸ¼ë§Œ **SELECT** 칼럼 ë¦¬ìŠ¤íŠ¸ì— ëª…ì‹œí• ìˆ˜ 있다. ê¸°ë³¸ê°’ì€ **no** ì´ë¯€ë¡œ, SQL í‘œì¤€ì— ë”°ë¼ ì§ˆì˜ë¥¼ ìˆ˜í–‰í•˜ë ¤ë©´ **only_full_group_by** 파ë¼ë¯¸í„° ê°’ì„ yes로 ì„¤ì •í•œë‹¤. ì´ ê²½ìš°ì—는 í™•ìž¥ëœ ë¬¸ë²•ì´ ì ìš©ë˜ì§€ 않으므로 실행 결과로 아래와 ê°™ì€ ì—러가 ì¶œë ¥ëœë‹¤. :: ERROR: Attributes exposed in aggregate queries must also appear in the group by clause. .. _oracle_compat_number_behavior: **oracle_compat_number_behavior** **oracle_compat_number_behavior**\는 다른 DBMS(Database Management System)ì™€ì˜ í˜¸í™˜ì„± í–¥ìƒì„ 위한 파ë¼ë¯¸í„°ë¡œ, NUMERIC, DOUBLE ê³¼ FLOAT íƒ€ìž…ì— ëŒ€í•´ 소숫ì ì´í•˜ 0ì„ ì¶œë ¥í•˜ì§€ 않ë„ë¡ í•˜ë©°, DOUBLEê³¼ FLOATì¸ ê²½ìš° 지수 형ì‹ìœ¼ë¡œ 표시하지 않는다. 예를 들면, ì´ íŒŒë¼ë¯¸í„° ì„¤ì • ê°’ì´ **no**\ì¸ ê²½ìš°, DOUBLE 타입으로 êµ¬ì„±ëœ a_double í…Œì´ë¸”ì„ ì¡°íšŒí•˜ëŠ” ì¿¼ë¦¬ì˜ ê²°ê³¼ëŠ” 아래와 ê°™ì´ ì§€ìˆ˜ 형태로 표시ë˜ì§€ë§Œ, 파ë¼ë¯¸í„° ì„¤ì • ê°’ì´ **yes**\ì¸ ê²½ìš° 소수ì 으로만 표시ëœë‹¤. .. code-block:: sql csql> ;get oracle_compat_number_behavior === Get Param Input === oracle_compat_number_behavior=n SELECT a FROM a_double; :: a ========================== 1.234567890123457e+19 1.234567890123457e-08 1.230000000000000e-08 1.000000000000000e+00 1.200000000000000e+00 -4.939030300000000e-03 -1.293934894993939e+18 -1.938943893939394e+16 :: csql> ;get oracle_compat_number_behavior === Get Param Input === oracle_compat_number_behavior=y SELECT a FROM a_double; :: a ========================== 12345678901234570000 0.00000001234567890123457 0.0000000123 1 1.2 -0.0049390303 -1293934894993939000 -19389438939393940 ë˜í•œ, **oracle_compat_number_behavior**\ì´ **yes**\로 ì„¤ì •ëœ ê²½ìš°, ì •ìˆ˜ íƒ€ìž…ì˜ ë‚˜ëˆ„ê¸° ì—°ì‚° 결과가 ì •ìˆ˜ íƒ€ìž…ì´ ì•„ë‹Œ 실수 타입 (즉, NUMERIC 타입)ì´ ëœë‹¤. ì•„ëž˜ì˜ ì˜ˆëŠ” ì´ íŒŒë¼ë¯¸í„°ê°€ **yes**\로 ì„¤ì •ëœ ê²½ìš°ë¡œ, ì ìš©ë˜ëŠ” ì •ìˆ˜ íƒ€ìž…ì€ INT, SHORT, BIGINT ì´ë‹¤. .. code-block:: sql csql> ;get oracle_compat_number_behavior === Get Param Input === oracle_compat_number_behavior=y SELECT 1/2; :: 1/2 ========== 0.5 .. note:: JDBC/CCIì—서 NUMERIC, DOUBLE ë° FLOAT íƒ€ìž…ì˜ ë°ì´í„°ë¥¼ 문ìžì—´ 형태로 ì½ì„ 경우만 oracle_compat_number_behavior ì„¤ì •ê°’ì´ ì ìš©ëœë‹¤. 아래는 ì„¤ì •ê°’ì´ ì ìš©ë˜ëŠ” JDBC/CCI함수ì´ë‹¤. * JDBC : getString(int columnIndex), getString(String columnLabel), getObject(int columnIndex), getObject(String columnLabel) * CCI : cci_get_data(CCI_A_TYPE_STR typeì„ ì‚¬ìš©í•œ 경우), 예) cci_get_data(req, i, CCI_A_TYPE_STR, &data, &ind) .. _oracle_style_empty_string: **oracle_style_empty_string** **oracle_style_empty_string** ì€ ë‹¤ë¥¸ DBMS(Database Management System)ì™€ì˜ í˜¸í™˜ì„±ì„ í–¥ìƒì‹œí‚¤ê¸° 위한 파ë¼ë¯¸í„°ë¡œ, 빈 문ìžì—´(empty string)ê³¼ **NULL** ì„ ê°™ì€ ê°’ìœ¼ë¡œ 처리하ë„ë¡ ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. **oracle_style_empty_string** 파ë¼ë¯¸í„°ë¥¼ **no** 로 ì„¤ì •í•˜ë©´ 빈 문ìžì—´ì„ ìœ íš¨í•œ 문ìžì—´ë¡œ ì²˜ë¦¬í•˜ê³ , **yes** 로 ì„¤ì •í•˜ë©´ í•¨ìˆ˜ì— ë”°ë¼ ë¹ˆ 문ìžì—´ì„ **NULL** 로 처리하거나, **NULL** ì„ ë¹ˆ 문ìžì—´ë¡œ 처리한다. .. note:: ì´í•˜ì— ì–¸ê¸‰ëœ í•¨ìˆ˜ë“¤ì„ ì œì™¸í•œ 나머지 í•¨ìˆ˜ë“¤ì€ **oracle_style_empty_string** 파ë¼ë¯¸í„°ì˜ ì˜í–¥ì„ 받지 않는다. * **oracle_style_empty_string=yes** ì¼ ë•Œ 빈 문ìžì—´ê³¼ NULLì„ ë™ì¼í•˜ê²Œ NULL로 처리하는 함수 * :func:`ASCII` * :func:`CONCAT_WS` * :func:`ELT` * :func:`FIELD` * :func:`FIND_IN_SET` * :func:`FROM_BASE64` * :func:`INSERT` * :func:`INSTR` * :func:`LOWER` * :func:`LEFT` * :func:`LOCATE` * :func:`LPAD` * :func:`LTRIM` * :func:`MID` * :func:`POSITION` * :func:`REPEAT` * :func:`REVERSE` * :func:`RIGHT` * :func:`RPAD` * :func:`RTRIM` * :func:`SPACE` * :func:`STRCMP` * :func:`SUBSTR` * :func:`SUBSTRING` * :func:`SUBSTRING_INDEX` * :func:`TO_BASE64` * :func:`TRANSLATE` * :func:`TRIM` * :func:`UPPER` * **oracle_style_empty_string=yes** ì¼ ë•Œ 빈 문ìžì—´ê³¼ NULLì„ ë™ì¼í•˜ê²Œ 빈 문ìžì—´ë¡œ 처리하는 함수 * :func:`CONCAT` * :func:`REPLACE` .. note:: :func:`REPLACE` 함수는 10.0 미만ì—서 **oracle_style_empty_string=yes** ì¼ ë•Œì˜ ë™ìž‘ì´ ë‹¤ë¥´ë‹¤. .. code-block:: sql SELECT REPLACE ('abc', 'a', ''); ìœ„ì˜ ì§ˆì˜ì— 대해 10.0 ì´ìƒ ë²„ì „ì—서는 빈 문ìžì—´ ìž…ë ¥ì„ ë¹ˆ 문ìžì—´ë¡œ 처리하여 'bc'를 ì¶œë ¥í•˜ì§€ë§Œ, 10.0 미만 ë²„ì „ì—서는 빈 문ìžì—´ ìž…ë ¥ì„ NULL로 처리하여 NULLì„ ì¶œë ¥í•œë‹¤. **pipes_as_concat** **pipes_as_concat** ì€ ì´ì¤‘ 파ì´í”„ 기호(||)ì˜ ì‚¬ìš©ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ yesì´ë©´ ì´ì¤‘ 파ì´í”„ 기호가 문ìžì—´ì˜ 병합 ì—°ì‚°ìžë¡œ í•´ì„ë˜ê³ , **no** ì´ë©´ 불리언(boolean) ì—°ì‚°ìžì¸ **OR** 로 í•´ì„ëœë‹¤. **plus_as_concat** **plus_as_concat** ì€ **+** ì—°ì‚°ìžì˜ ì‚¬ìš©ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **yes** ì´ë©´ **+** ì—°ì‚°ìžê°€ 문ìžì—´ì˜ 병합 ì—°ì‚°ìžë¡œ í•´ì„ë˜ê³ , **no** ì´ë©´ 수치 ì—°ì‚°ìžë¡œ í•´ì„ëœë‹¤. .. code-block:: sql -- plus_as_concat = yes SELECT '1'+'1'; :: '1'+'1' ====================== '11' .. code-block:: sql SELECT '1'+'a'; :: '1'+'a' ====================== '1a' .. code-block:: sql -- plus_as_concat = no SELECT '1'+'1'; :: '1'+'1' ========================== 2.000000000000000e+000 .. code-block:: sql SELECT '1'+'a'; :: ERROR: Cannot coerce 'a' to type double. **require_like_escape_character** **require_like_escape_character** 는 **LIKE** ì ˆì˜ ì´ìŠ¤ì¼€ì´í”„ ë¬¸ìž ì‚¬ìš© ì—¬ë¶€ì— ê´€í•œ 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **yes** ì´ê³ **no_backslash_escapes** ê°€ **no** ì´ë©´ **LIKE** ì ˆì˜ ë¬¸ìžì—´ì—서 백슬래시(\\)ê°€ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¡œ 사용ë˜ë©°, ê·¸ë ‡ì§€ 않으면 **LIKE... ESCAPE** ì ˆì„ ì‚¬ìš©í•˜ì—¬ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¥¼ 명시해야 한다. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`like-expr` ì„ ì°¸ê³ í•œë‹¤. **return_null_on_function_errors** **return_null_on_function_errors** 는 ì¼ë¶€ SQL 함수ì—서 ì—러가 ë°œìƒí• ë•Œì˜ ë™ìž‘ì„ ì •ì˜í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ **yes** ì´ë©´ 함수ì—서 ì—러가 ë°œìƒí• 때 **NULL**\ ì„ ë°˜í™˜í•˜ë©°, **no** ì´ë©´ 함수ì—서 ì—러가 ë°œìƒí• 때 ì—러를 ë°˜í™˜í•˜ê³ ê´€ë ¨ 메시지를 ì¶œë ¥í•œë‹¤. ë‹¤ìŒ SQL 함수가 ì´ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„°ì˜ ì˜í–¥ì„ 받는다. **ë‚ ì§œ/시간 함수** * :func:`ADDDATE` * :func:`ADDTIME` * :func:`DATEDIFF` * :func:`DAY` * :func:`DAYOFMONTH` * :func:`DAYOFWEEK` * :func:`DAYOFYEAR` * :func:`FROM_DAYS` * :func:`FROM_UNIXTIME` * :func:`HOUR` * :func:`LAST_DAY` * :func:`MAKEDATE` * :func:`MAKETIME` * :func:`MINUTE` * :func:`MONTH` * :func:`QUARTER` * :func:`SEC_TO_TIME` * :func:`SECOND` * :func:`TIME` * :func:`TIME_TO_SEC` * :func:`TIMEDIFF` * :func:`TO_DAYS` * :func:`WEEK` * :func:`WEEKDAY` * :func:`YEAR` **문ìžì—´ 함수** * :func:`ASCII` * :func:`BIN` * :func:`BIT_LENGTH` * :func:`CHR` **수치 함수** * :func:`ABS` * :func:`ACOS` * :func:`ASIN` * :func:`ATAN` * :func:`ATAN2` * :func:`CEIL` * :func:`CONV` * :func:`COS` * :func:`COT` * :func:`DEGREES` * :func:`EXP` * :func:`FLOOR` * :func:`LN` * :func:`LOG2` * :func:`LOG10` * :func:`MOD` * :func:`POW` * :func:`RADIANS` * :func:`SIGN` * :func:`SIN` * :func:`SQRT` * :func:`TAN` * :func:`TRUNC` * :func:`WIDTH_BUCKET` .. code-block:: sql SET SYSTEM PARAMETERS 'return_null_on_function_errors=no'; SELECT YEAR('12:34:56'); :: ERROR: Conversion error in time format. .. code-block:: sql SET SYSTEM PARAMETERS 'return_null_on_function_errors=yes'; SELECT YEAR('12:34:56'); :: year('12:34:56') ====================== NULL **string_max_size_bytes** **string_max_size_bytes** 는 문ìžì—´ 함수 ë˜ëŠ” ì—°ì‚°ì—서 문ìžì—´ ì¸ìžë¡œ ì‚¬ìš©í• ìˆ˜ 있는 최대 ë°”ì´íЏ í¬ê¸°ë¥¼ ì •ì˜í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ **1,048,576** ë°”ì´íЏ(1M)ì´ë‹¤. ìµœì†Œê°’ì€ 64 ë°”ì´íЏ, ìµœëŒ€ê°’ì€ 33,554,432 ë°”ì´íЏ(32M)ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ì— ì˜í–¥ì„ 받는 함수 ë° ì—°ì‚°ì‹ì€ 다ìŒê³¼ 같다. * :func:`SPACE` * :func:`CONCAT` * :func:`CONCAT_WS` * **+**\: 문ìžì—´ì´ í”¼ì—°ì‚°ìž * :func:`REPEAT` * :func:`GROUP_CONCAT`\: ì´ í•¨ìˆ˜ëŠ” **string_max_size_bytes** 파ë¼ë¯¸í„°ë¿ë§Œ ì•„ë‹ˆë¼ **group_concat_max_len** 파ë¼ë¯¸í„°ì˜ ì˜í–¥ë„ 받는다. * :func:`INSERT` 함수 .. _unicode_input_normalization: **unicode_input_normalization** 시스템 수준ì—서 ìž…ë ¥í• ìœ ë‹ˆì½”ë“œë¥¼ ê²°í•©ëœ ì½”ë“œë¡œ ì €ìž¥í• ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì¼ë°˜ì 으로 ìœ ë‹ˆì½”ë“œ í…스트는 "ì™„ì „ížˆ ê²°í•©ëœ(fully composed)" í˜¹ì€ "ì™„ì „ížˆ ë¶„í•´ëœ(fully decomposed)" ìƒíƒœë¡œ ì €ìž¥ë 수 있다. 예를 들면 "ì™„ì „ížˆ ê²°í•©ëœ" ë¬¸ìž 'Ä'는 í•˜ë‚˜ì˜ ì½”ë“œí¬ì¸íŠ¸ì¸ 00C4를 갖는ë°, ì´ëŠ” UTF-8 ì¸ì½”딩으로 C3 84ì˜ 2ë°”ì´íŠ¸ê°€ ëœë‹¤. ì´ì™€ 달리 "ì™„ì „ížˆ ë¶„í•´ëœ" 모드ì—서는 ë‘ ê°œì˜ ì½”ë“œí¬ì¸íЏ/ë¬¸ìž 0041(ë¬¸ìž "A")ê³¼ 0308(COMBINING DIAERESIS)ì´ ë˜ë©°, UTF-8 ì¸ì½”딩으로는 41 CC 88ì˜ 3ë°”ì´íŠ¸ê°€ ëœë‹¤. CUBRID는 ì™„ì „ížˆ ê²°í•©ëœ ìœ ë‹ˆì½”ë“œë§Œ ê°€ì§€ê³ ë™ìž‘í• ìˆ˜ 있다. ì™„ì „ížˆ ë¶„í•´ëœ ë¬¸ìžì—´ì„ 가진 ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì— ëŒ€í•´ì„œëŠ” **unicode_input_normalization** ì˜ ê°’ì„ yes로 ì„¤ì •í•˜ì—¬ ì™„ì „ížˆ ê²°í•©ëœ ì½”ë“œë¡œ 변환하여 ë™ìž‘한 후 **unicode_output_normalization** ì˜ ê°’ì„ yes로 ì„¤ì •í•˜ì—¬ 다시 ì™„ì „ížˆ ë¶„í•´ëœ í…스트로 ë˜ëŒë ¤ì¤„ 수 있다. ì¼ë°˜ì 으로 ìœ ë‹ˆì½”ë“œ ì •ê·œí™”ëŠ” ê²°í•© ì´í›„ ë¶„í•´ 시 ì—ë³€í™˜ì´ ë¶ˆê°€ëŠ¥í•˜ì§€ë§Œ CUBRID는 가능한 한 ë§Žì€ ë¬¸ìžë“¤ì˜ ì—ë³€í™˜ì„ ê°€ëŠ¥í•˜ê²Œ 하기 위해 간략화한 ìœ ë‹ˆì½”ë“œ ì •ê·œí™” ë°©ì‹ì„ ì 용한다. CUBRID ì •ê·œí™”ì˜ íŠ¹ì§•ì€ ë‹¤ìŒê³¼ 같다. * ì •ê·œí™”ëŠ” 언어 특징ì ì¸ ìš”ì†Œê°€ 아니며 ë¡œìº˜ì— ì˜ì¡´í•˜ì§€ 않는다. ì¼ë‹¨ 하나 ì´ìƒì˜ ë¡œìº˜ì„ ì‚¬ìš©í• ìˆ˜ 있다면, ëª¨ë“ CAS/CSQL 프로세스ì—서 ì´ë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. 하지만 ì •ê·œí™”ëŠ” CUBRID 서버 í”„ë¡œì„¸ìŠ¤ì— ì ìš©ë˜ëŠ” ê²ƒì´ ì•„ë‹ˆë‹¤. **unicode_input_normalization** 시스템 파ë¼ë¯¸í„°ëŠ” 시스템 수준ì—서 ì •ê·œí™”ì— ì˜í•œ ìž…ë ¥ ì½”ë“œì˜ ê²°í•© 여부를 ì§€ì •í•œë‹¤. **unicode_output_normalization** 시스템 파ë¼ë¯¸í„°ëŠ” 시스템 수준ì—서 ì •ê·œí™”ì— ì˜í•œ ì¶œë ¥ ì½”ë“œì˜ ë¶„í•´ 여부를 ì§€ì •í•œë‹¤. * ì½œë ˆì´ì…˜ê³¼ ì •ê·œí™”ëŠ” ì§ì ‘ ê´€ë ¨ì´ ì—†ë‹¤. **unicode_input_normalization** ê°’ì´ noìž„ì—ë„ ë¶ˆêµ¬í•˜ê³ , í™•ìž¥ì´ ìžˆëŠ” ì½œë ˆì´ì…˜(utf8_de_exp, utf8_jap_exp, utf8_km_exp) 문ìžì—´ì´ ì™„ì „ížˆ ë¶„í•´ëœ ìƒíƒœì—서 ì œëŒ€ë¡œ ì •ë ¬ë˜ì§€ë§Œ ì´ëŠ” ì˜ë„한 사í•ì´ ì•„ë‹ˆë©° UCA(Unicode Collation Algorithm)ì˜ ìš°ì—°í•œ 효과(side-effect)ì¼ ë¿ì´ë‹¤. í™•ìž¥ì´ ìžˆëŠ” ì½œë ˆì´ì…˜ì€ ì˜¤ì§ ì™„ì „ížˆ ê²°í•©ëœ í…스트만 ê°€ì§€ê³ ë™ìž‘하ë„ë¡ êµ¬í˜„ë˜ì—ˆë‹¤. * CUBRIDì—서 ìœ ë‹ˆì½”ë“œ ì •ê·œí™”ë¥¼ 위한 ê²°í•©(composition)ê³¼ ë¶„í•´(decomposition)는 별개로 ë™ìž‘하지 않는다. ì¼ë°˜ì 으로 **unicode_input_normalization** 와 **unicode_output_normalization** ì˜ ê°’ì„ yes로 사용한다. ì´ ê²½ìš° í´ë¼ì´ì–¸íŠ¸ë¡œë¶€í„° ìž…ë ¥ëœ ì½”ë“œëŠ” ê²°í•© 모드로 ì €ìž¥ë˜ê³ ì¶œë ¥ì€ ë¶„í•´ 모드로 ì €ìž¥ëœë‹¤. í´ë¼ì´ì–¸íЏ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ í…스트 ë°ì´í„°ë¥¼ ë¶„í•´ëœ í˜•íƒœë¡œ CUBRIDì— ë³´ë‚¸ë‹¤ë©´, **unicode_input_normalization** ì„ **yes** 로 ì„¤ì •í•˜ì—¬ CUBRIDê°€ ê²°í•©ëœ ì½”ë“œë¡œ 다루게 한다. í´ë¼ì´ì–¸íЏ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ë¶„í•´ëœ í˜•íƒœë¡œë§Œ ë°ì´í„°ë¥¼ 다룰 수 있다면 **unicode_output_normalization** ì„ **yes** 로 ì„¤ì •í•˜ì—¬ CUBRIDê°€ í•ìƒ ë¶„í•´ëœ ì½”ë“œë¡œ ë°ì´í„°ë¥¼ ë³´ë‚´ë„ë¡ í•œë‹¤. í´ë¼ì´ì–¸íЏ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ìž…ë ¥ê³¼ ì¶œë ¥ì˜ í˜•íƒœì— ëŒ€í•´ ëª¨ë‘ ì•Œê³ ìžˆë‹¤ë©´, **unicode_input_normalization** ê³¼ **unicode_output_normalization** ì„ **no** ì¸ ìƒíƒœë¡œ 둔다(기본 ì„¤ì •). 로캘과 ì½œë ˆì´ì…˜ì— 대한 ìžì„¸í•œ ì„¤ëª…ì€ :doc:`/sql/i18n` ì„ ì°¸ê³ í•œë‹¤. **unicode_output_normalization** 시스템 수준ì—서 ì €ìž¥ëœ ìœ ë‹ˆì½”ë“œë¥¼ ë¶„í•´ëœ ì½”ë“œë¡œ ì¶œë ¥í• ê²ƒì¸ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. 보다 ìžì„¸í•œ ì„¤ëª…ì€ ìœ„ì˜ **unicode_input_normalization** ì„¤ëª…ì„ ì°¸ê³ í•œë‹¤. .. _update_use_attribute_references: **update_use_attribute_references** **update_use_attribute_references** 는 **UPDATE** 문ì—서 ê°±ì‹ ëŒ€ìƒ ì¹¼ëŸ¼ì„ ëª…ì‹œí• ë•Œ ë¨¼ì € 명시한 ì¹¼ëŸ¼ì˜ ê°’ì´ ì§ˆì˜ë¬¸ì—서 해당 ì¹¼ëŸ¼ì„ ì‚¬ìš©í•˜ëŠ” ë˜ ë‹¤ë¥¸ ì¹¼ëŸ¼ì˜ ê°±ì‹ ì— ì˜í–¥ì„ 줄 것ì¸ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œì„œ, ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì•„ëž˜ì˜ UPDATE 문 결과는 **update_use_attribute_references** 파ë¼ë¯¸í„°ì˜ ê°’ì— ë”°ë¼ ë‹¬ë¼ì§„다. .. code-block:: sql CREATE TABLE tbl(a INT, b INT); INSERT INTO tbl values (10, NULL); UPDATE tbl SET a=1, b=a; ì´ íŒŒë¼ë¯¸í„°ì˜ ê°’ì´ yesì´ë©´, ìœ„ì˜ UPDATE 질ì˜ì—서 ê°±ì‹ ë˜ëŠ” bì˜ ê°’ì€ "a=1"ì˜ ì˜í–¥ì„ 받아 1ì´ ëœë‹¤. .. code-block:: sql SELECT * FROM tbl; :: 1, 1 ì´ íŒŒë¼ë¯¸í„°ì˜ ê°’ì´ noì´ë©´, ìœ„ì˜ UPDATE 질ì˜ì—서 ê°±ì‹ ë˜ëŠ” bì˜ ê°’ì€ "a=1"ì˜ ì˜í–¥ì„ 받지 ì•Šê³ í•´ë‹¹ ë ˆì½”ë“œì— ì €ìž¥ë˜ì–´ 있는 a ê°’ì˜ ì˜í–¥ì„ 받아 NULLì´ ëœë‹¤. .. code-block:: sql SELECT * FROM tbl; :: 1, NULL .. _thread-parameters: ìŠ¤ë ˆë“œ ê´€ë ¨ 파ë¼ë¯¸í„° -------------------- ìŠ¤ë ˆë“œ 파ë¼ë¯¸í„° ì„¤ì •ì„ í†µí•´ ìŠ¤ë ˆë“œë¥¼ ê´€ë¦¬í• ìˆ˜ 있다. ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +---------------------------------------+--------+-------------------+---------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=======================================+========+===================+=========+=========+ | thread_connection_pooling | bool | true | | | +---------------------------------------+--------+-------------------+---------+---------+ | thread_connection_timeout_seconds | int | 300 | -1 | 3600 | +---------------------------------------+--------+-------------------+---------+---------+ | thread_worker_pooling | bool | true | | | +---------------------------------------+--------+-------------------+---------+---------+ | thread_core_count | int | 시스템 코어 수 | 1 | 1024 | +---------------------------------------+--------+-------------------+---------+---------+ | thread_worker_timeout_seconds | int | 300 | -1 | 3600 | +---------------------------------------+--------+-------------------+---------+---------+ | loaddb_worker_count | bool | 8 | 2 | 64 | +---------------------------------------+--------+-------------------+---------+---------+ **thread_connection_pooling** **thread_connection_pooling** 파ë¼ë¯¸í„°ê°€ trueì´ë©´, 서버 부팅 시 í´ë¼ì´ì–¸íЏ ì—°ê²°ì„ ê´€ë¦¬í•˜ëŠ” ëª¨ë“ ìŠ¤ë ˆë“œê°€ í’€ë§ëœë‹¤. **thread_connection_timeout_seconds** **thread_connection_timeout_seconds**\는 ì—°ê²°ì„ ê´€ë¦¬í•˜ëŠ” ìŠ¤ë ˆë“œê°€ 종료하기 ì „ì— ëŒ€ê¸°í•˜ëŠ” ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ìŠ¤ë ˆë“œëŠ” ì—°ê²°ì´ ì¢…ë£Œëœ í›„ 새로운 ì—°ê²°ì„ í• ë‹¹ë°›ê¸° 위해 파ë¼ë¯¸í„° ì„¤ì •ê°’(ì´ˆ 단위) ë™ì•ˆ 대기한다. 대기 ì‹œê°„ì„ ì´ˆê³¼í• ë•Œê¹Œì§€ 새로운 ì—°ê²°ì„ í• ë‹¹ë°›ì§€ 못하면, ìŠ¤ë ˆë“œëŠ” 종료하게 ëœë‹¤. ì´í›„ 새로운 ì—°ê²° ìš”ì²ì´ ë°œìƒí•˜ê²Œ ë˜ë©´ 다른 ìŠ¤ë ˆë“œê°€ 시작ë 것ì´ë‹¤. 파ë¼ë¯¸í„° ê°’ì´ **-1**\로 ì„¤ì •ëœ ê²½ìš° ìŠ¤ë ˆë“œëŠ” 종료하지 ì•Šê³ , 새로운 ì—°ê²°ì´ í• ë‹¹ë 때까지 ì •ì§€í•œë‹¤. **thread_worker_pooling** **thread_worker_pooling** 파ë¼ë¯¸í„°ê°€ trueì´ë©´, 서버 부팅 시 í´ë¼ì´ì–¸íŠ¸ê°€ ìš”ì²í•œ ìž‘ì—…ì„ ì‹¤í–‰í•˜ëŠ” ëª¨ë“ ìŠ¤ë ˆë“œê°€ í’€ë§ëœë‹¤. **thread_core_count** **thread_core_count** 파ë¼ë¯¸í„°ì— ë”°ë¼ í’€ë§ë˜ëŠ” ìŠ¤ë ˆë“œì˜ ê·¸ë£¹ 개수를 ì¡°ì •í•œë‹¤. 기본 ê°’ì€ ì‹œìŠ¤í…œ 코어 수로 ì„¤ì •ëœë‹¤. 만약 ì„¤ì •ëœ íŒŒë¼ë¯¸í„° ê°’ì— ì˜í•´ 한 ê·¸ë£¹ì˜ ìŠ¤ë ˆë“œê°€ 3ê°œ ì´ìƒ 확보ë˜ì§€ 않으면, 최소한 3ê°œì˜ ìŠ¤ë ˆë“œê°€ ê° ê·¸ë£¹ì— ì†í•˜ë„ë¡ ì‹œìŠ¤í…œì´ ê°•ì œë¡œ ì´ ê°’ì„ ì¡°ì •í•œë‹¤. **thread_worker_timeout_seconds** **thread_worker_timeout_seconds**\는 í´ë¼ì´ì–¸íŠ¸ê°€ ìš”ì²í•œ ìž‘ì—…ì„ ì²˜ë¦¬í•˜ëŠ” ìŠ¤ë ˆë“œê°€ 종료하기 ì „ì— ëŒ€ê¸°í•˜ëŠ” ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ìŠ¤ë ˆë“œëŠ” í´ë¼ì´ì–¸íŠ¸ê°€ ìš”ì²í•œ ìž‘ì—…ì„ ì‹¤í–‰í•œ 후 새로운 ìž‘ì—…ì„ í• ë‹¹ë°›ê¸° 위해 파ë¼ë¯¸í„° ì„¤ì •ê°’(ì´ˆ 단위) ë™ì•ˆ 대기한다. 대기 ì‹œê°„ì„ ì´ˆê³¼í• ë•Œê¹Œì§€ 새로운 í´ë¼ì´ì–¸íЏ ìš”ì² ìž‘ì—…ì„ í• ë‹¹ë°›ì§€ 못하면, ìŠ¤ë ˆë“œëŠ” 종료하게 ëœë‹¤. ì´í›„ 새로운 í´ë¼ì´ì–¸íЏ ìš”ì² ìž‘ì—…ì´ ë°œìƒí•˜ê²Œ ë˜ë©´ 다른 ìŠ¤ë ˆë“œê°€ 시작ë 것ì´ë‹¤. 파ë¼ë¯¸í„° ê°’ì´ **-1**\로 ì„¤ì •ëœ ê²½ìš° ìŠ¤ë ˆë“œëŠ” 종료하지 ì•Šê³ , 새로운 ìž‘ì—…ì´ í• ë‹¹ë 때까지 ì •ì§€í•œë‹¤. **loaddb_worker_count** **loaddb_worker_count**\는 **loaddb** ì„¸ì…˜ì— ì „ìš©ìœ¼ë¡œ í• ë‹¹ë˜ëŠ” 최대 ìŠ¤ë ˆë“œ 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ë‹¨ì¼ **loaddb** ì„¸ì…˜ì´ ìˆ˜í–‰ë˜ëŠ” 경우 ëª¨ë“ ìŠ¤ë ˆë“œê°€ ì´ ìž‘ì—…ì„ ìˆ˜í–‰í• ìˆ˜ë„ ìžˆë‹¤. 여러 **loaddb** ì„¸ì…˜ì´ ë™ì‹œì— 수행ë˜ëŠ” 경우 ëª¨ë“ ì„¸ì…˜ì— í• ë‹¹ëœ ìŠ¤ë ˆë“œì˜ ì´ ìˆ˜ëŠ” ì´ íŒŒë¼ë¯¸í„° ì„¤ì •ê°’ì„ ì´ˆê³¼í• ìˆ˜ 없다. .. _timezone-parameters: 타임존 파ë¼ë¯¸í„° --------------- 다ìŒì€ 타임존과 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------+--------+-------------------+---------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +===============================+========+===================+=========+=========+ | server_timezone | string | OSì˜ íƒ€ìž„ì¡´ | | | +-------------------------------+--------+-------------------+---------+---------+ | timezone | string | server_timezone | | | +-------------------------------+--------+-------------------+---------+---------+ | tz_leap_second_support | bool | no | | | +-------------------------------+--------+-------------------+---------+---------+ * **timezone** ì„¸ì…˜ì— ëŒ€í•œ íƒ€ìž„ì¡´ì„ ì„¤ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **server_timezone** ì˜ ê°’ì´ë‹¤. 타임존 오프셋(예: +01:00, +02) ë˜ëŠ” 타임존 ì§€ì— ì´ë¦„(예: Asia/Seoul)으로 ì„¤ì • 가능하며, ë°ì´í„°ë² ì´ìФ ìš´ì˜ ì¤‘ ë³€ê²½ì´ ê°€ëŠ¥í•˜ë‹¤. * **server_timezone** ì„œë²„ì— ëŒ€í•œ íƒ€ìž„ì¡´ì„ ì„¤ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ OSì˜ íƒ€ìž„ì¡´ì´ë‹¤. ë³€ê²½ëœ ê°’ì„ ë°˜ì˜í•˜ë ¤ë©´ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 재시작해야 한다. ìš´ì˜ ì²´ì œì˜ íƒ€ìž„ì¡´ì€ ìš´ì˜ ì²´ì œì™€ ìš´ì˜ ì²´ì œ ì„¤ì • 파ì¼ì— 있는 ì •ë³´ì— ë”°ë¼ ë‹¤ë¥¼ 수 있다. - Windowsì˜ ê²½ìš°, tzset() 함수와 tzname[0] 변수를 사용해 Windows ìŠ¤íƒ€ì¼ íƒ€ìž„ì¡´ëª…ì„ ê²€ìƒ‰í•œë‹¤. ì´ ì´ë¦„ì€ CUBRID 매핑 ë°ì´í„°ë¥¼ 사용하는 IANA/CUBRID 스타ì¼ëª…으로 변환ëœë‹¤(매핑 파ì¼ì€ %CUBRID%\\timezones\\tzdata\\windowsZones.xmlìž„). - Linuxì˜ ê²½ìš°, CUBRIDì—서 "/etc/sysconfig/clock" 파ì¼ì„ ì½ê³ êµ¬ë¬¸ì„ ë¶„ì„í•˜ë ¤ 시ë„한다. ì´ íŒŒì¼ì´ 없는 경우 "/etc/localtime"ì˜ ê°’ì„ ì½ê³ 사용한다. - AIXì˜ ê²½ìš°, "TZ" ìš´ì˜ ì²´ì œ 환경 ë³€ìˆ˜ì˜ ê°’ì„ ì‚¬ìš©í•œë‹¤. ëª¨ë“ ìš´ì˜ ì²´ì œì—서 server_timezoneì´ ì§€ì •ë˜ì§€ ì•Šì€ ê²½ìš° "Asia/Seoul" íƒ€ìž„ì¡´ì„ ì„œë²„ 타임존으로 사용한다. * **tz_leap_second_support** 윤초(leap second)ì— ëŒ€í•œ ì§€ì› ì—¬ë¶€ë¥¼ yes ë˜ëŠ” no로 ì„¤ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. 윤초(é–ç§’)란 태양시 í‰ê· ì— ê·¼ì ‘í•œ í•˜ë£¨ì˜ ì‹œê°„ì„ ìœ ì§€í•˜ê¸° 위해 í˜‘ì • 세계시(UTC)ì—서 ë°œìƒí•˜ëŠ” 오차를 ë³´ì •í•˜ê¸° 위해 ê°€ë” ì¶”ê°€í•˜ëŠ” 1ì´ˆì´ë‹¤. ë³€ê²½ëœ ê°’ì„ ë°˜ì˜í•˜ë ¤ë©´ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 재시작해야 한다. .. _plan-cache-parameters: ì§ˆì˜ ê³„íš ìºì‹œ ê´€ë ¨ 파ë¼ë¯¸í„° ---------------------------- 다ìŒì€ ì§ˆì˜ ê³„íšì— 대한 ìºì‹œ 기능과 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------+--------+---------+---------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +===============================+========+=========+=========+=========+ | max_plan_cache_entries | int | 1,000 | | | +-------------------------------+--------+---------+---------+---------+ | max_filter_pred_cache_entries | int | 1,000 | | | +-------------------------------+--------+---------+---------+---------+ **max_plan_cache_entries** **max_plan_cache_entries** 는 ë©”ëª¨ë¦¬ì— ìºì‹œí•˜ëŠ” ì§ˆì˜ ì‹¤í–‰ 계íšì˜ 최대 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **max_plan_cache_entries** 파ë¼ë¯¸í„°ê°€ -1ì´ë‚˜ 0으로 ì„¤ì •ë˜ë©´ ìž‘ì„±ëœ ì§ˆì˜ ì‹¤í–‰ 계íšì„ 메모리 ìºì‹œì— ì €ìž¥í•˜ì§€ 않는 것ì´ë©°, 1 ì´ìƒì˜ ì •ìˆ˜ê°’ì´ ì„¤ì •ë˜ë©´ ì„¤ì •ëœ ê°œìˆ˜ë§Œí¼ì˜ ì§ˆì˜ ì‹¤í–‰ 계íšì„ 메모리 ìºì‹œí•œë‹¤. 다ìŒì€ 최대 1,000ê°œì˜ ì§ˆì˜ì— 대해 ì§ˆì˜ ì‹¤í–‰ ê³„íš ìºì‹œ ê¸°ëŠ¥ì„ ìˆ˜í–‰í•˜ëŠ” ì˜ˆì œì´ë‹¤. :: max_plan_cache_entries=1000 **max_filter_pred_cache_entries** **max_filter_pred_cache_entries** 는 ë©”ëª¨ë¦¬ì— ìºì‹œí•˜ëŠ” í•„í„°ë§ëœ ì¸ë±ìФ 표현ì‹ì˜ 최대 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. í•„í„°ë§ëœ ì¸ë±ìФ 표현ì‹ì€ 컴파ì¼ëœ ìƒíƒœë¡œ ì €ìž¥ë˜ë¯€ë¡œ, 서버ì—서 즉시 ì‚¬ìš©í• ìˆ˜ 있다. ìºì‹œì— ì €ìž¥ë˜ì–´ 있지 ì•Šì„ ê²½ìš°, í•„í„°ë§ëœ ì¸ë±ìФ 표현ì‹ì„ ë°ì´í„°ë² ì´ìФ 스키마ì—서 ê°€ì ¸ì™€ì„œ í•´ì„하는 ê³¼ì •ì´ í•„ìš”í•˜ë‹¤. .. _query-cache-parameters: ì§ˆì˜ ìºì‰¬ ê´€ë ¨ 파ë¼ë¯¸í„° ----------------------------------- 다ìŒì€ ì§ˆì˜ ê²°ê³¼ì— ëŒ€í•œ ìºì‹œ 기능과 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------+--------+----------+----------+----------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +===============================+========+==========+==========+==========+ +-------------------------------+--------+----------+----------+----------+ | max_query_cache_entries | int | 0 | 0 | INT_MAX | +-------------------------------+--------+----------+----------+----------+ | query_cache_size_in_pages | int | 0 | 0 | INT_MAX | +-------------------------------+--------+----------+----------+----------+ ë‘ íŒŒë¼ë¯¸í„° ê°’ 중 하나가 0ì¸ ê²½ìš°, **QUERY_CACHE** 힌트와 ìƒê´€ ì—†ì´ ì§ˆì˜ ê²°ê³¼ëŠ” ìºì‹œë˜ì§€ 않는다. **max_query_cache_entries** **max_query_cache_entries** 는 최대 ìºì‹œí• 수 있는 ì§ˆì˜ ê°œìˆ˜ì— ëŒ€í•œ ì„¤ì • ê°’ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ 1ì´ìƒìœ¼ë¡œ ì„¤ì •ë˜ë©´ ì„¤ì •ëœ ìˆ˜ ë§Œí¼ì˜ 질ì˜ê°€ ìºì‹œëœë‹¤. ë‹¤ìŒ ì˜ˆëŠ” 최대 500ê°œì˜ ì§ˆì˜ë¥¼ ìºì‹œí•˜ëŠ” ê²ƒì„ ë³´ì—¬ì£¼ê³ ìžˆë‹¤. :: max_query_cache_entries=500 **query_cache_size_in_pages** **query_cache_size_in_pages** 는 최대 ìºì‹œí• 수 있는 ê²°ê³¼ 페ì´ì§€ì— 대한 ì„¤ì • ê°’ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì´ 1ì´ìƒìœ¼ë¡œ ì„¤ì •ë˜ë©´ ì„¤ì •ëœ íŽ˜ì´ì§€ ë§Œí¼ì˜ 결과가 ìºì‹œëœë‹¤. ë‹¤ìŒ ì˜ˆëŠ” 최대 4000 페ì´ì§€ì˜ 결과를 ìºì‹œí•˜ëŠ” ê²ƒì„ ë³´ì—¬ì£¼ê³ ìžˆë‹¤. :: query_cache_size_in_pages=4000 .. _utility-parameters: ìœ í‹¸ë¦¬í‹° ê´€ë ¨ 파ë¼ë¯¸í„° ---------------------- 다ìŒì€ CUBRIDì—서 사용ë˜ëŠ” ìœ í‹¸ë¦¬í‹°ì™€ ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +------------------------------+--------+---------+---------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +==============================+========+=========+=========+=========+ | backup_volume_max_size_bytes | byte | 0 | 32K | | +------------------------------+--------+---------+---------+---------+ | communication_histogram | bool | no | | | +------------------------------+--------+---------+---------+---------+ | compactdb_page_reclaim_only | int | 0 | | | +------------------------------+--------+---------+---------+---------+ | csql_history_num | int | 50 | 1 | 200 | +------------------------------+--------+---------+---------+---------+ **backup_volume_max_size_bytes** **backup_volume_max_size_bytes** 는 **cubrid backupdb** ìœ í‹¸ë¦¬í‹°ì— ì˜í•´ ìƒì„±ë˜ëŠ” 백업 볼륨 파ì¼ì˜ ë¶„í• í¬ê¸°ë¥¼ ë°”ì´íЏ 단위로 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G, T로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes를 ì˜ë¯¸í•œë‹¤. 단위를 ìƒëžµí•˜ë©´ ë°”ì´íЏ 단위가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ 0ì´ê³ , ìµœì†Œê°’ì€ 32Kì´ë‹¤. ê¸°ë³¸ê°’ì¸ **0** 으로 ì„¤ì •í•˜ë©´ ìƒì„±ë˜ëŠ” 백업 ë³¼ë¥¨ì´ ë¶„í• ë˜ì§€ 않으며, 0보다 í° ê°’ì„ ì„¤ì •í•˜ë©´ ì§€ì •ëœ í¬ê¸°ì˜ 단위로 백업 볼륨 파ì¼ì„ ë¶„í• í•˜ì—¬ ìƒì„±í•œë‹¤. **communication_histogram** **communication_histogram** ì€ csql ì¸í„°í”„ë¦¬í„°ì˜ :ref:`csql-session-commands` " **;.h** "와 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ì´ë©°, ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. :ref:`CSQL 실행 통계 ì •ë³´ ì¶œë ¥ <csql-execution-statistics>` 를 ì°¸ê³ í•œë‹¤. **compactdb_page_reclaim_only** **compactdb_page_reclaim_only** 는 **compactdb** ìœ í‹¸ë¦¬í‹°ì™€ ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ ì´ë¯¸ í• ë‹¹ëœ ì €ìž¥ ì˜ì—ì˜ OID를 재사용하기 위하여 ì´ë¯¸ ì‚ì œëœ ê°ì²´ì˜ ì €ìž¥ ì˜ì—ì„ ì •ë¦¬í•˜ëŠ” ìœ í‹¸ë¦¬í‹°ì´ë‹¤. **compactdb** ìœ í‹¸ë¦¬í‹°ì— ì˜í•´ ì €ìž¥ ì˜ì—ì´ ìž¬ì •ë ¬ë˜ëŠ” ìž‘ì—…ì€ 3단계로 êµ¬ë¶„í• ìˆ˜ 있으며, **compactdb_page_reclaim_only** 파ë¼ë¯¸í„°ë¥¼ 통해 ìž¬ì •ë ¬ ìž‘ì—…ì˜ ë‹¨ìœ„ë¥¼ ì„ íƒí• 수 있다. ê¸°ë³¸ê°’ì¸ **0** 으로 ì„¤ì •í•˜ë©´ 1, 2, 3단계를 ëª¨ë‘ ìˆ˜í–‰í•˜ë¯€ë¡œ ë°ì´í„° 단위, í…Œì´ë¸” 단위, íŒŒì¼ ë‹¨ìœ„ë¡œ ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•œë‹¤. 1로 ì„¤ì •í•˜ë©´ 1단계를 ìƒëžµí•˜ë¯€ë¡œ í…Œì´ë¸” ë° íŒŒì¼ ë‹¨ìœ„ë¡œ ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•˜ê³ , 2로 ì„¤ì •í•˜ë©´ 1, 2단계를 ìƒëžµí•˜ë¯€ë¡œ íŒŒì¼ ë‹¨ìœ„ë¡œë§Œ ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•œë‹¤. * 1단계 : ë°ì´í„° 단위로 ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•œë‹¤. * 2단계 : í…Œì´ë¸” 단위로 ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•œë‹¤. * 3단계 : íŒŒì¼ ë‹¨ìœ„(heap file)로 ì €ìž¥ ì˜ì—ì„ ìž¬ì •ë ¬í•œë‹¤. **csql_history_num** **csql_history_num** ì€ CSQL ì¸í„°í”„리터와 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ë¡œ CSQL ì¸í„°í”„리터 ë‚´ì—서 ížˆìŠ¤í† ë¦¬ ë‚´ì—으로 ì €ìž¥ë˜ëŠ” SQL ë¬¸ì˜ ê°œìˆ˜ë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **50** ì´ë‹¤. .. _ha-parameters: HA ê´€ë ¨ 파ë¼ë¯¸í„° ---------------- 다ìŒì€ HA ê´€ë ¨ 파ë¼ë¯¸í„°ë¡œ, ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +---------------+--------+---------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | +===============+========+=========+ | ha_mode | string | off | +---------------+--------+---------+ **ha_mode** **ha_mode** 는 CUBRID HA ê¸°ëŠ¥ì„ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë©°, ê¸°ë³¸ê°’ì€ **off** ì´ë‹¤. * off : CUBRID HA ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì§€ 않는다. * on : ì„¤ì •í•œ 노드는 failoverì˜ ëŒ€ìƒì´ ë˜ëŠ” 노드로, CUBRID HA ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤. * replica : ì„¤ì •í•œ 노드는 failoverì˜ ëŒ€ìƒì´ ë˜ì§€ 않는 노드로, CUBRID HA ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤. CUBRID HA ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´ **ha_mode** 파ë¼ë¯¸í„°ë¥¼ ì„¤ì •í•˜ëŠ” 것 ì™¸ì— **cubrid_ha.conf** 파ì¼ì—서 HA ê´€ë ¨ 파ë¼ë¯¸í„°ë¥¼ ì„¤ì •í•´ì•¼ 한다. ìžì„¸í•œ ë‚´ìš©ì€ :doc:`/ha` 를 ì°¸ê³ í•œë‹¤. .. _other-parameters: 기타 파ë¼ë¯¸í„° ------------- 다ìŒì€ 기타 파ë¼ë¯¸í„° ì •ë³´ë¡œ ê° íŒŒë¼ë¯¸í„°ì˜ 타입과 ì„¤ì • 가능한 ê°’ì˜ ë²”ìœ„ëŠ” 다ìŒê³¼ 같다. +-------------------------------------+--------+----------------+----------------+----------------+ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | 최소값 | 최대값 | +=====================================+========+================+================+================+ | access_ip_control | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | access_ip_control_file | string | | | | +-------------------------------------+--------+----------------+----------------+----------------+ | agg_hash_respect_order | bool | yes | | | +-------------------------------------+--------+----------------+----------------+----------------+ | auto_restart_server | bool | yes | | | +-------------------------------------+--------+----------------+----------------+----------------+ | enable_string_compression | bool | yes | | | +-------------------------------------+--------+----------------+----------------+----------------+ | index_scan_in_oid_order | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | index_unfill_factor | float | 0.05 | 0 | 0.5 | +-------------------------------------+--------+----------------+----------------+----------------+ | java_stored_procedure | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | java_stored_procedure_port | int | 0 | 0 | 65535 | +-------------------------------------+--------+----------------+----------------+----------------+ | java_stored_procedure_jvm_options | string | | | | +-------------------------------------+--------+----------------+----------------+----------------+ | multi_range_optimization_limit | int | 100 | 0 | 10,000 | +-------------------------------------+--------+----------------+----------------+----------------+ | optimizer_enable_merge_join | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | use_stat_estimation | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | server | string | | | | +-------------------------------------+--------+----------------+----------------+----------------+ | service | string | | | | +-------------------------------------+--------+----------------+----------------+----------------+ | session_state_timeout | sec | 21,600 | 60(1 minute) | 31,536,000 | | | | (6 hours) | | (1 year) | +-------------------------------------+--------+----------------+----------------+----------------+ | sort_limit_max_count | int | 1000 | 0 | INT_MAX | +-------------------------------------+--------+----------------+----------------+----------------+ | sql_trace_slow | msec | -1(inf) | 0 | 86,400,000 | | | | | | (24 hours) | +-------------------------------------+--------+----------------+----------------+----------------+ | sql_trace_execution_plan | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | use_orderby_sort_limit | bool | yes | | | +-------------------------------------+--------+----------------+----------------+----------------+ | vacuum_prefetch_log_mode | int | 1 | 0 | 1 | +-------------------------------------+--------+----------------+----------------+----------------+ | vacuum_prefetch_log_buffer_size | int | 50M | 25M | INT_MAX | +-------------------------------------+--------+----------------+----------------+----------------+ | data_buffer_neighbor_flush_pages | int | 8 | 0 | 32 | +-------------------------------------+--------+----------------+----------------+----------------+ | data_buffer_neighbor_flush_nondirty | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ | tde_keys_file_path | string | | | | +-------------------------------------+--------+----------------+----------------+----------------+ | tde_default_algorithm | string | AES | | | +-------------------------------------+--------+----------------+----------------+----------------+ | recovery_progress_logging_interval | int | 0 (off) | 0 | 3600 | +-------------------------------------+--------+----------------+----------------+----------------+ | supplemental_log | int | 0 (off) | 0 | 2 | +-------------------------------------+--------+----------------+----------------+----------------+ | regexp_engine | string | re2 | | | +-------------------------------------+--------+----------------+----------------+----------------+ | vacuum_ovfp_check_threshold | int | 1000 | 2 | INT_MAX | +-------------------------------------+--------+----------------+----------------+----------------+ | vacuum_ovfp_check_duration | int | 45000 | 1 | 600000 | +-------------------------------------+--------+----------------+----------------+----------------+ | deduplicate_key_level | int | -1 | -1 | 14 | +-------------------------------------+--------+----------------+----------------+----------------+ | print_index_detail | bool | no | | | +-------------------------------------+--------+----------------+----------------+----------------+ **access_ip_control** **access_ip_control** ì€ ì„œë²„ ì ‘ì†ì„ 허용하는 IP를 ì œí•œí•˜ëŠ” 기능 사용 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`limiting-server-access` ì„ ì°¸ê³ í•œë‹¤. **access_ip_control_file** **access_ip_control_file** ì€ ì„œë²„ê°€ 허용하는 IP 목ë¡ì„ ì €ìž¥í•œ íŒŒì¼ ì´ë¦„ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **access_ip_control** ê°’ì´ yesì´ë©´ ë°ì´í„°ë² ì´ìФ 서버는 ì´ íŒŒë¼ë¯¸í„°ë¡œ ì§€ì •í•œ 파ì¼ì— ì €ìž¥ëœ IPì˜ ì ‘ì†ë§Œ 허용한다. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`limiting-server-access` ì„ ì°¸ê³ í•œë‹¤. .. _agg_hash_respect_order: **agg_hash_respect_order** **agg_hash_respect_order** 는 집계 함수ì—서 ê·¸ë£¹ì´ ìˆœì„œëŒ€ë¡œ 반환ë˜ëŠ”ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. :ref:`max_agg_hash_size <max_agg_hash_size>` 를 ì°¸ê³ í•œë‹¤. ì´ ëª¨ë“ ê·¸ë£¹(키와 누ì ê²°ê³¼)ì´ í•´ì‹œ ë©”ëª¨ë¦¬ì— ìƒì£¼í• 수 있으면, "agg_hash_respect_order=no" ì„¤ì •ì€ ê²°ê³¼ë¥¼ ì¶œë ¥í•˜ê¸° ì „ì— ì •ë ¬í•˜ëŠ” ê³¼ì •ì„ ìƒëžµí• 것ì´ë¯€ë¡œ, 순서가 보장ë˜ì§€ ì•Šì„ ê²ƒì´ë¼ê³ ì˜ˆì¸¡í• ìˆ˜ 있다. 그러나, 오버플로우가 ë°œìƒí•˜ë©´ ì •ë ¬ ê³¼ì •ì´ ìˆ˜í–‰ë˜ì–´ì•¼ 하며 "agg_hash_respect_order=false"로 ì„¤ì •ë˜ì—ˆë”ë¼ë„ ì •ë ¬ëœ ê²°ê³¼ë¥¼ 얻게 ëœë‹¤. **auto_restart_server** **auto_restart_server** 는 ë°ì´í„°ë² ì´ìФ 서버 í”„ë¡œì„¸ìŠ¤ì— ì‹¬ê°í•œ 오류가 ë°œìƒí•´ì„œ 프로세스가 중단ë ê²½ìš°ì— ìžë™ìœ¼ë¡œ ìž¬ì‹œìž‘í• ê²ƒì¸ê°€ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **auto_restart_server** 를 **yes** 로 ì„¤ì •í•˜ë©´ 서버 프로세스가 오류로 중단ë˜ì—ˆì„ 때 ìžë™ìœ¼ë¡œ 재시작한다. ì •ìƒì ì¸ ì¢…ë£Œ ì ˆì°¨(CUBRID ì„œë²„ì˜ **STOP** ëª…ë ¹)ì— ì˜í•´ ì¢…ë£Œëœ ê²½ìš°ì—는 해당하지 않는다. .. _enable_string_compression: **enable_string_compression** **enable_string_compression** ì€ ë¬¸ìžì—´ 타입 ê°’ì„ íž™, ì¸ë±ìФ ë˜ëŠ” ë¦¬ìŠ¤íŠ¸ì— ì €ìž¥í• ë•Œ 문ìžì—´ ì••ì¶• 사용 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **enable_string_compression** ê°’ì„ **yes** 로 ì„¤ì •í•˜ë©´ 문ìžì—´ í¬ê¸°ê°€ 255ë°”ì´íЏ ì´ìƒì´ê³ , ì••ì¶•ëœ ë¬¸ìžì—´ì´ ì›ëž˜ 문ìžì—´ì˜ í¬ê¸°ë³´ë‹¤ ìž‘ì„ ê²½ìš° ì••ì¶•ëœ ë¬¸ìžì—´ë¡œ ì €ìž¥ëœë‹¤. **index_scan_in_oid_order** **index_scan_in_oid_order** 는 ì¸ë±ìŠ¤ë¥¼ 스캔한 후 검색 ê²°ê³¼ ë°ì´í„°ë¥¼ ê°€ì ¸ì˜¤ëŠ” 순서를 OID 순으로 ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì¸ **no** 로 ì„¤ì •í•˜ë©´ ë°ì´í„° 순서대로 결과를 ê°€ì ¸ì˜¤ê³ , yes로 ì„¤ì •í•˜ë©´ OID 순서대로 결과를 ê°€ì ¸ì˜¨ë‹¤. **index_unfill_factor** 최초 ì¸ë±ìФ ìƒì„± 후 **INSERT** 나 **UPDATE** 를 ì‹¤í–‰í• ë•Œ ì¸ë±ìФ 페ì´ì§€ê°€ 꽉 차서 ì—¬ìœ ê³µê°„ì´ ì—†ìœ¼ë©´ ì¸ë±ìФ 페ì´ì§€ 노드 ë¶„í• (split)ì´ ë°œìƒí•˜ëŠ”ë°, ì´ëŠ” 오í¼ë ˆì´ì…˜ ì‹œê°„ì„ ì¦ê°€ì‹œì¼œ ì„±ëŠ¥ì— ì˜í–¥ì„ 미친다. **index_unfill_factor** 는 ì¸ë±ìŠ¤ë¥¼ ìƒì„±í• 때 ê° ì¸ë±ìФ 페ì´ì§€ ë…¸ë“œì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•˜ëŠ” ë¹„ìœ¨ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **index_unfill_factor** ì„¤ì •ê°’ì€ ì¸ë±ìŠ¤ë¥¼ ì²˜ìŒ ìƒì„±í• 때만 ì ìš©ë˜ë©°, 페ì´ì§€ì— ì§€ì •ëœ ë¹ˆ ê³µê°„ì˜ ë¹„ìœ¨ì„ ë™ì 으로 ìœ ì§€í•˜ì§€ 않는다. ê°’ì˜ ë²”ìœ„ëŠ” 0부터 0.5까지ì´ê³ ê¸°ë³¸ê°’ì€ **0.05** ì´ë‹¤. ì¸ë±ìŠ¤ë¥¼ ìƒì„±í• 때 ì¸ë±ìŠ¤ì˜ íŽ˜ì´ì§€ ë…¸ë“œì— ì—¬ìœ ê³µê°„ì´ ì—†ì´(**index_unfill_factor** 를 0으로 ì„¤ì •) ìƒì„±í•œë‹¤ë©´, 추가로 ì‚½ìž…í• ë•Œë§ˆë‹¤ 매번 ì¸ë±ìФ 페ì´ì§€ ë…¸ë“œì˜ ë¶„í• ì´ ë°œìƒí•˜ì—¬ ì„±ëŠ¥ì— ì˜í–¥ì„ ë¼ì¹œë‹¤. **index_unfill_factor** ê°’ì´ í¬ë©´ ì¸ë±ìФ ìƒì„± 시 노드 ì—¬ìœ ê³µê°„ì„ ë§Žì´ í™•ë³´í•œë‹¤. ë”°ë¼ì„œ 최초 ì¸ë±ìФ ìƒì„± 후 노드 ì—¬ìœ ê³µê°„ì´ ê½‰ ì°° 때까지 ìƒëŒ€ì 으로 긴 시간 ë™ì•ˆ ì¸ë±ìФ ë…¸ë“œì˜ ë¶„í• ì´ ë°œìƒí•˜ì§€ 않으므로, ìƒëŒ€ì 으로 ì„±ëŠ¥ì´ ë‚˜ì„ ìˆ˜ 있다. ì´ ê°’ì´ ìž‘ìœ¼ë©´ ì¸ë±ìФ ìƒì„± 시 노드 ì—¬ìœ ê³µê°„ì´ ìž‘ê¸° 때문ì—, ì¸ë±ìФ ë…¸ë“œì˜ ì—¬ìœ ê³µê°„ì´ ê¸ˆë°© 꽉 차게 ë ê°€ëŠ¥ì„±ì´ ë†’ìœ¼ë¯€ë¡œ, ìƒëŒ€ì 으로 **INSERT** 나 **UPDATE** ì— ì˜í•œ ì¸ë±ìФ 노드 ë¶„í• ë°œìƒ ê°€ëŠ¥ì„±ì´ ë†’ë‹¤. **java_stored_procedure** **java_stored_procedure** 는 Java ê°€ìƒ ë¨¸ì‹ (Java Virtual Machine, JVM)ì„ ì‹¤í–‰í•˜ì—¬ Java ì €ìž¥ í”„ë¡œì‹œì €(Java stored procedure)를 사용하게 하기 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì¸ **no**\ 로 ì„¤ì •í•˜ë©° JVMì´ ì‹¤í–‰ë˜ì§€ ì•Šê³ , yes로 ì„¤ì •í•˜ë©´ JVMì´ ì‹¤í–‰ë˜ì–´ Java ì €ìž¥ í”„ë¡œì‹œì €(Java stored procedure)를 ì‚¬ìš©í• ìˆ˜ 있다. ë”°ë¼ì„œ, Java ì €ìž¥ í”„ë¡œì‹œì €ë¥¼ ì‚¬ìš©í• ê³„íšì´ 있는 경우ì—는 파ë¼ë¯¸í„°ë¥¼ yes로 ì„¤ì •í•´ì•¼ 한다. **java_stored_procedure_port** **java_stored_procedure_port** ë°ì´í„°ë² ì´ìФ 서버ì—서 ìžë°” ì €ìž¥ í”„ë¡œì‹œì €ë¥¼ 호출하기 위한 TCP í¬íЏ 번호를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì´ ê°’ì€ 65,536보다 작아야한다. ê¸°ë³¸ê°’ì€ **0** ì´ê³ ì´ëŠ” 임시 í¬íЏ 범위ì—서 í¬íЏ 번호가 ìžë™ìœ¼ë¡œ í• ë‹¹ë¨ì„ ì˜ë¯¸í•œë‹¤. ì´ íŒŒë¼ë¯¸í„°ì˜ ê°’ì€ **java_stored_procedure** 파ë¼ë¯¸í„°ê°€ **yes** ì¼ ë•Œì—ë§Œ ì ìš©ëœë‹¤. cubrid.confì˜ [common]ì—서 ì´ íŒŒë¼ë¯¸í„°ë¥¼ ì„¤ì •í•˜ë©´ ì—러가 ë°œìƒí•˜ë¯€ë¡œ 주ì˜í•œë‹¤. :: ..... [common] ..... # an error occurs. remove the following line. java_stored_procedure_port=4333 ..... [@testdb] ..... # the parameter is configured successfully for testdb java_stored_procedure_port=4334 ..... **java_stored_procedure_uds** **java_stored_procedure_uds** 는 ìžë°” ì €ìž¥ í”„ë¡œì‹œì €ë¥¼ 호출하는 cub_javasp 프로세스와 cub_server 프로세스 ê°„ì— TCP ì—°ê²° ëŒ€ì‹ ìœ ë‹‰ìŠ¤ ë„ë©”ì¸ ì†Œì¼“ì„ í†µí•œ ì—°ê²°ì„ ì‚¬ìš©í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **yes**\ì´ê³ Windowsì˜ ê²½ìš° 파ë¼ë¯¸í„°ì˜ ê°’ê³¼ ê´€ë ¨ ì—†ì´ **no**\로 ë™ìž‘한다. .. note:: cub_javasp í”„ë¡œì„¸ìŠ¤ì˜ ìœ ë‹‰ìŠ¤ ë„ë©”ì¸ ì†Œì¼“ íŒŒì¼ ê²½ë¡œë¥¼ ì§€ì •í•˜ëŠ” **CUBRID_TMP** 환경 ë³€ìˆ˜ì— ëŒ€í•œ ë‚´ìš©ì€ :doc:`/env` ì„ ì°¸ê³ í•œë‹¤. **java_stored_procedure_jvm_options** **java_stored_procedure_jvm_options** 는 Java ì €ìž¥ í”„ë¡œì‹œì €(Java stored procedure)ê°€ 실행ë˜ëŠ” Java ê°€ìƒ ë¨¸ì‹ (Java Virtual Machine, JVM)ê³¼ Java ì˜µì…˜ì„ ì„¤ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê° ì˜µì…˜ 문ìžì—´ì€ 공백으로 구분해야한다. JVM ì˜µì…˜ì˜ ê²½ìš° 표준 옵션, 비표준 옵션 ê·¸ë¦¬ê³ ê³ ê¸‰ ì˜µì…˜ì´ ìžˆë‹¤. 비표준과 ê³ ê¸‰ ì˜µì…˜ì˜ ê²½ìš° ëª¨ë“ JVM 구현ì—서 ì§€ì›í•˜ëŠ” ê²ƒì„ ë³´ìž¥í•˜ì§€ 않는다. ê¸°ë³¸ê°’ì€ ë¹ˆ 문ìžì—´ì´ë‹¤. 만약 파ë¼ë¯¸í„°ê°€ [@<database>] ì„¹ì…˜ì— ì„¤ì •ë˜ë©´, [common] 섹션ì—서 ì„¤ì •ëœ ì˜µì…˜ì€ í•´ë‹¹ ë°ì´í„°ë² ì´ìŠ¤ì— ì ìš©ë˜ì§€ 않는다. :: ..... [common] ..... java_stored_procedure_jvm_options="-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" ..... [@testdb] ..... java_stored_procedure=yes # -XX:PermSize=512m and -XX:MaxPermSize=512m ì˜µì…˜ì€ [common] ì„¹ì…˜ì— ì„¤ì •ë˜ì—ˆë”ë¼ë„ testdbì— ì ìš©ë˜ì§€ 않는다. java_stored_procedure_jvm_options="-Xms2048m -Xmx2048m" ..... **multi_range_optimization_limit** **multi_range_optimization_limit** ì€ ë‹¤ì¤‘ 범위(col IN (? , ?, ... ,?))ì˜ ì¡°ê±´ì„ ê°€ì§€ë©° ì¸ë±ìФ ì‚¬ìš©ì´ ê°€ëŠ¥í•œ 질ì˜ì—서, **LIMIT** ì ˆì´ ì§€ì •í•˜ëŠ” í–‰ì˜ ê°œìˆ˜ê°€ ì´ íŒŒë¼ë¯¸í„°ê°€ ì§€ì •í•˜ëŠ” ìˆ«ìž ì´ë‚´ì´ë©´ ì¸ë±ìФ ì •ë ¬ ë°©ì‹ì— 대한 최ì 화를 수행한다. ê¸°ë³¸ê°’ì€ **100** ì´ë‹¤. 예를 들어, ì´ íŒŒë¼ë¯¸í„°ì˜ ê°’ì´ 50ì¼ ë•Œ LIMIT 10ì´ë©´ ì´ íŒŒë¼ë¯¸í„°ê°€ ì§€ì •í•œ ê°’ ì´ë‚´ì´ë¯€ë¡œ ê° ì¡°ê±´ì— í•´ë‹¹í•˜ëŠ” ë²”ìœ„ì˜ ê°’ì„ ì •ë ¬í•˜ë©´ì„œ 결과를 ìƒì„±í•œë‹¤. LIMIT 60ì´ë©´ 파ë¼ë¯¸í„° ì„¤ì •ê°’ì„ ì´ˆê³¼í•˜ë¯€ë¡œ ê° ì¡°ê±´ì— í•´ë‹¹í•˜ëŠ” ë²”ìœ„ì˜ ê°’ì„ ëª¨ë‘ ê°€ì ¸ì˜¨ 후 ì •ë ¬í•œë‹¤. ì´ ê°’ì˜ ì„¤ì •ì— ë”°ë¼ ì¤‘ê°„ ê°’ì˜ ì •ë ¬ì„ ì§„í–‰í•˜ë©´ì„œ(on-the-fly) 결과를 수집하ëŠëƒ, ê²°ê³¼ ê°’ì„ ë¨¼ì € 수집한 후 ì •ë ¬í•˜ëŠëƒì˜ ì°¨ì´ê°€ ë°œìƒí•˜ë¯€ë¡œ, ì´ ê°’ì´ ë„ˆë¬´ í¬ë©´ ì˜¤ížˆë ¤ ì„±ëŠ¥ì— ë¶ˆë¦¬í• ìˆ˜ 있다. **optimizer_enable_merge_join** **optimizer_enable_merge_join** 는 ì •ë ¬ 병합 ì¡°ì¸(sort merge join) 계íšì„ ì§ˆì˜ ì‹¤í–‰ 계íšì˜ í›„ë³´ì— í¬í•¨í• 것ì¸ì§€ 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì •ë ¬ 병합 ì¡°ì¸ê³¼ ê´€ë ¨ëœ ë‚´ìš©ì€ :ref:`sql-hint` 를 ì°¸ê³ í•œë‹¤. **use_stat_estimation** **use_stat_estimation** 는 í†µê³„ì •ë³´ 계산 시 예측 ì •ë³´ë¥¼ ì‚¬ìš©í• ê²ƒì¸ì§€ 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. íž™ ë§¤ë‹ˆì €ì—서 DML 처리 중 ìƒì„±ë˜ëŠ” 예측 ì •ë³´ëŠ” ì¶”ê°€ëœ ê°ì²´ 수와 ê´€ë ¨ 있다. ì´ê²ƒì€ ì „ì²´ ê°ì²´ 개수ì—는 ìƒëŒ€ì 으로 ì •í™•í•˜ì§€ë§Œ ê³ ìœ ê°’ 개수ì—는 ì •í™•í•˜ì§€ 않다. **server** **server** 는 CUBRID 서비스 시작 시 ìžë™ìœ¼ë¡œ 시작하ë„ë¡ í•˜ëŠ” ë°ì´í„°ë² ì´ìФ 서버 í”„ë¡œì„¸ìŠ¤ë“¤ì˜ ì´ë¦„ì„ ë“±ë¡í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 해당 ë°ì´í„°ë² ì´ìŠ¤ë“¤ì˜ ì´ë¦„ì„ ì‰¼í‘œ(,)로 구분하여 나열한다. **service** **service** 는 CUBRID 서비스 시작 시 ìžë™ìœ¼ë¡œ 시작하는 프로세스를 등ë¡í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ **server**, **broker**, **manager**, **heartbeat** ì˜ ë„¤ 종류 프로세스가 있다. ì¼ë°˜ì 으로 **service=server,broker,manager** 와 ê°™ì´ ì„¸ 종류 프로세스를 등ë¡í•œë‹¤. ê° í”„ë¡œì„¸ìŠ¤ì— ë”°ë¥¸ ë™ìž‘ì€ ë‹¤ìŒê³¼ 같다. * **server** : **@server** 파ë¼ë¯¸í„°ì—서 ì§€ì •í•œ ë°ì´í„°ë² ì´ìФ 프로세스를 시작한다. * **broker** : 브로커 프로세스를 시작한다. * **manager** : ë§¤ë‹ˆì € 프로세스를 시작한다. * **heartbeat** : HA ê´€ë ¨ 프로세스를 시작한다. **session_state_timeout** **session_state_timeout** ì€ DB 서버 프로세스 ë‚´ì—서 세션 ë°ì´í„°ê°€ ìœ ì§€ë˜ëŠ” ì‹œê°„ì„ ì •ì˜í•˜ëŠ” 시스템 파ë¼ë¯¸í„°ì´ë‹¤. 세션 ë°ì´í„°ëŠ” 드ë¼ì´ë²„ê°€ ì—°ê²°ì„ ì¢…ë£Œí•˜ê±°ë‚˜ 세션 ê¸°ê°„ì´ ë§Œë£Œë (expired) 때 ì‚ì œë˜ë©°, ì‘ìš© í´ë¼ì´ì–¸íŠ¸ê°€ ë¹„ì •ìƒ ì¢…ë£Œë˜ë©´ ì§€ì •í•œ 시간 ì´í›„ì— ì„¸ì…˜ ê¸°ê°„ì´ ë§Œë£Œëœë‹¤. CUBRID 세션 ë°ì´í„°ì— 해당하는 ê²ƒì€ **SET** 으로 ì •ì˜ëœ ì‚¬ìš©ìž ë³€ìˆ˜, **PREPARE** 문, 가장 ë§ˆì§€ë§‰ì— ì‚½ìž…í•œ ID(**LAST_INSERT_ID**), 가장 ë§ˆì§€ë§‰ì— ì‹¤í–‰í•œ ë¬¸ìž¥ì— ì˜í–¥ë°›ì€ ë ˆì½”ë“œì˜ ê°œìˆ˜(**ROW_COUNT**)ì´ë‹¤. **SET** 으로 ì •ì˜ëœ ì‚¬ìš©ìž ë³€ìˆ˜ì™€ **PREPARE** ë¬¸ì€ ì„¸ì…˜ ê¸°ê°„ì´ ë§Œë£Œë˜ê¸° ì „ì— **DROP** / **DEALLOCATE** ë¬¸ì„ ìˆ˜í–‰í•˜ì—¬ ì‚ì œí• ìˆ˜ 있다. ê¸°ë³¸ê°’ì€ **21,600** (6시간)ì´ê³ , 단위는 ì´ˆì´ë‹¤. **sort_limit_max_count** "ORDER BY ... LIMIT *N* " êµ¬ë¬¸ì— ì˜í•´ top-Nê°œì˜ í–‰ì´ ì •ë ¬ë 때 ì ìš©ë 수 있는 SORT-LIMIT 최ì 화와 ê´€ë ¨í•˜ì—¬, 해당 최ì 화를 ì 용하는 ê²ƒì„ ì œí•œí•˜ëŠ” LIMIT í–‰ 개수를 명시한다. *N* ì˜ ê°’ì´ **sort_limit_max_count** ì˜ ê°’ë³´ë‹¤ ìž‘ì„ ë•Œ SORT-LIMIT 최ì 화가 ì ìš©ëœë‹¤. ê¸°ë³¸ê°’ì€ **1,000** ì´ë©°, ìµœì†Œê°’ì€ 0(최ì 화를 í•ìƒ ì•ˆ 한다는 뜻), ìµœëŒ€ê°’ì€ INT_MAXì´ë‹¤. ì¢€ë” ìžì„¸í•œ 사í•ì€ :ref:`sort-limit-optimization` 를 ì°¸ê³ í•œë‹¤. **sql_trace_slow** **sql_trace_slow** 는 장기 실행 질ì˜(long running query)로 íŒë‹¨ë ì§ˆì˜ ì‹¤í–‰ ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ms, s, min, h 단위를 ì§€ì •í• ìˆ˜ 있으며 ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 기본 단위는 밀리초(ms)ì´ë‹¤. ê¸°ë³¸ê°’ì€ **-1** ì´ê³ ìµœëŒ€ê°’ì€ 86,400,000 밀리초(24h)ì´ë‹¤. -1ì€ ë¬´í•œëŒ€ ì‹œê°„ì„ ì˜ë¯¸í•˜ë©° ì–´ë–¤ 질ì˜ë„ 장기 실행 질ì˜ë¡œ íŒë‹¨ë˜ì§€ 않는다. ìžì„¸í•œ ë‚´ìš©ì€ ì•„ëž˜ì˜ **sql_trace_execution_plan** ì˜ ì„¤ëª…ì„ ì°¸ê³ í•œë‹¤. .. note:: **sql_trace_slow** 는 ì„œë²„ì˜ ì§ˆì˜ ì‹¤í–‰ ì‹œê°„ì„ ê¸°ì¤€ìœ¼ë¡œ 실행 시간 초과 여부를 íŒë‹¨í•˜ë©°, **MAX_QUERY_TIMEOUT** 브로커 파ë¼ë¯¸í„°ëŠ” 브로커 단ì—ì„œì˜ ì§ˆì˜ ì‹¤í–‰ ì‹œê°„ì„ ê¸°ì¤€ìœ¼ë¡œ ì´ë¥¼ íŒë‹¨í•œë‹¤. **sql_trace_execution_plan** **sql_trace_execution_plan** ì€ **sql_trace_slow** 파ë¼ë¯¸í„° ê°’ì˜ ì„¤ì • ì‹œê°„ì„ ì´ˆê³¼í•œ 장기 실행 질ì˜(long running query)ì˜ ì‹¤í–‰ 계íšì„ ì¶œë ¥í• ì§€ 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **no** ì´ë‹¤. ì´ ê°’ì´ yesì´ë©´ 서버 ì—러 로그 파ì¼($CUBRID/log/server ì´í•˜ì˜ 파ì¼), CAS 로그 파ì¼($CUBRID/log/broker/sql_log ì´í•˜ì˜ 파ì¼)ì— í•´ë‹¹ SQL 문, ì§ˆì˜ ì‹¤í–‰ 계íš, cubrid statdump ëª…ë ¹ì˜ ì¶œë ¥ ì •ë³´ë¥¼ 기ë¡í•˜ë©°, cubrid plandump를 ì‹¤í–‰í• ë•Œ 해당 SQL 문과 ì§ˆì˜ ì‹¤í–‰ 계íšì„ ì¶œë ¥í•œë‹¤. ì´ ê°’ì´ noë©´ 서버 ì—러 로그 파ì¼, CAS 로그 파ì¼ì— 해당 SQL문만 기ë¡í•˜ë©°, cubrid plandump를 ì‹¤í–‰í• ë•Œ 해당 SQL 문만 ì¶œë ¥í•œë‹¤. 예를 들어 5초를 초과하면 ëŠë¦° 질ì˜(slow query)로 ê·œì •í•˜ê³ í•´ë‹¹ 질ì˜ì˜ 실행 계íšì„ 로그 파ì¼ì— ì¶œë ¥í•˜ê³ ì‹¶ì€ ê²½ìš°, **sql_trace_slow** ì˜ ê°’ì„ 5,000(ms)로 ì„¤ì •í•˜ê³ **sql_trace_execution_plan** ì˜ ê°’ì„ yes로 ì„¤ì •í•œë‹¤. 단, 서버 ì—러 로그 파ì¼ì—는 error_log_level 파ë¼ë¯¸í„°ì˜ ê°’ì´ NOTIFICATIONì¸ ê²½ìš°ì—ë§Œ 해당 ì •ë³´ë¥¼ 기ë¡í•œë‹¤. **use_orderby_sort_limit** **use_orderby_sort_limit** ì€ **ORDER BY ... LIMIT** *row_count* ì ˆì„ í¬í•¨í•˜ëŠ” 구문ì—서 질ì˜ì˜ ì •ë ¬ ë° í•©ë³‘(sort and merge) ê³¼ì •ì˜ ì¤‘ê°„ 결과를 *row_count* ë§Œí¼ë§Œ ìœ ì§€í• ê²ƒì¸ì§€ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **yes** ì´ë©´ 중간 ì •ë ¬ 결과를 *row_count* ë§Œí¼ë§Œ ìœ ì§€í•˜ê¸° ë•Œë¬¸ì— ë¶ˆí•„ìš”í•œ ë¹„êµ ë° í•©ë³‘ ê³¼ì •ì„ ì¤„ì¼ ìˆ˜ 있다. ê¸°ë³¸ê°’ì€ **yes** ì´ë‹¤. **vacuum_prefetch_log_mode** **vacuum_prefetch_log_mode** 는 vacuumì„ ìœ„í•˜ì—¬ 로그 페ì´ì§€ì˜ 프리패치(prefetch) 모드를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 모드 0ì—서는 vacuum 마스터 ìŠ¤ë ˆë“œê°€ ê³µìœ ë²„í¼ì—서 필요한 로그 페ì´ì§€ë¥¼ 프리패치한다. 모드 1(기본값)ì—서는 ê° vacuum 작업ìžê°€ ìžì²´ 버í¼ì—서 필요한 로그 페ì´ì§€ë¥¼ 프리패치한다. ë˜í•œ 모드 0ì—서는 **vacuum_prefetch_log_buffer_size** 시스템 파ë¼ë¯¸í„°ë¥¼ ì„¤ì •í•´ì•¼ 하지만, 모드 1ì—서는 ì´ íŒŒë¼ë¯¸í„°ë¥¼ ë¬´ì‹œí•˜ê³ ê° vacuum 작업ìžê°€ ì „ì²´ vacuum 로그 블ë¡(기본 32ê°œì˜ ë¡œê·¸ 페ì´ì§€)ì„ í”„ë¦¬íŒ¨ì¹˜í•œë‹¤. **vacuum_prefetch_log_buffer_size** **vacuum_prefetch_log_buffer_size** 는 vacuumì˜ ë¡œê·¸ 프리패치 ë²„í¼ í¬ê¸°ë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” **vacuum_prefetch_log_mode** 를 0으로 ì„¤ì •í•œ 경우ì—ë§Œ 사용한다. **data_buffer_neighbor_flush_pages** **data_buffer_neighbor_flush_pages** 는 백그ë¼ìš´ë“œ 플러시(í¬ìƒìž 후보 플러시) ê¸°ëŠ¥ì„ ì´ìš©í•´ 플러시ë ì¸ì ‘ 페ì´ì§€ 수를 관리하는 파ë¼ë¯¸í„°ì´ë‹¤. ì´ ê°’ì´ 1 ì´í•˜ì¸ 경우 ì¸ì ‘ 플러시 ê¸°ëŠ¥ì´ ë¹„í™œì„±í™”ëœ ê²ƒìœ¼ë¡œ 간주한다. **data_buffer_neighbor_flush_nondirty** **data_buffer_neighbor_flush_nondirty** ì¸ì ‘ 플러시 ê¸°ëŠ¥ì´ í™œì„±í™”ìƒíƒœì´ê³ (**data_buffer_neighbor_flush_pages** ê°€ 1보다 í° ê²½ìš°) í¬ìƒìž 후보 페ì´ì§€ê°€ 플러시ë 때 , ë”í‹° 페ì´ì§€ì— ì¸ì ‘한 ë”í‹°ê°€ 아닌 ë‹¨ì¼ íŽ˜ì´ì§€ë“¤ë„ 함께 플러시ëœë‹¤. **tde_keys_file_path** **tde_keys_file_path** 는 TDE를 위한 키 파ì¼ì˜ 경로를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 키 파ì¼ì˜ ì´ë¦„ì€ [database_name]_keys 로 ê³ ì •ë˜ì–´ ìžˆê³ , 해당 키 파ì¼ì´ 존재하는 ë””ë ‰í† ë¦¬ë¥¼ ì§€ì •í•œë‹¤. ì´ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„°ê°€ ì„¤ì •ë˜ì§€ ì•Šì•˜ì„ ê²½ìš°ì—는 ë°ì´í„°ë² ì´ìФ 볼륨과 ê°™ì€ ìœ„ì¹˜ì—서 키 파ì¼ì„ 찾는다. 키 파ì¼ì— 대한 ìžì„¸í•œ ì„¤ëª…ì€ :ref:`tde-file-based-key` 를 ì°¸ê³ í•œë‹¤. **tde_default_algorithm** **tde_default_algorithm** 는 TDE 암호화 í…Œì´ë¸” ìƒì„± ì‹œì— ì‚¬ìš©í•˜ëŠ” 기본 ì•Œê³ ë¦¬ì¦˜ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 로그 ë° ìž„ì‹œ ë°ì´í„°ëŠ” í•ìƒ ì´ íŒŒë¼ë¯¸í„°ë¡œ ì„¤ì •ëœ ì•Œê³ ë¦¬ì¦˜ì„ ì´ìš©í•˜ì—¬ 암호화ëœë‹¤. **AES** 와 **ARIA** ê°€ ì„¤ì • 가능하다. 암호화 ì•Œê³ ë¦¬ì¦˜ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€ :ref:`tde-algorithm` ì„ ì°¸ê³ í•œë‹¤. **recovery_progress_logging_interval** **recovery_progress_logging_interval** 는 복구 (recovery) ì˜ ìƒì„¸ê³¼ì •ì„ ë¡œê·¸ì— ì¶œë ¥í• ì§€ 여부와 ì¶œë ¥ 주기를 ì„¤ì •í•œë‹¤. ë¶„ì„(analysis), 리ë‘(redo), ì–¸ë‘(undo) ê° ë‹¨ê³„ë³„ ì „ì²´ 작업량과 현재 작업량, 앞으로 ë‚¨ì€ ì‹œê°„ 예ìƒì¹˜ë¥¼ ì¶œë ¥í•œë‹¤. 5초보다 작게 ì„¤ì •ë 경우 5초로 ì„¤ì •ëœë‹¤. **supplemental_log** **supplemental_log** 는 CDC (Change Data Capture) ë˜ëŠ” :ref:`flashback` ì§€ì›ì— 필요한 ì •ë³´ë¥¼ 로그 ë³¼ë¥¨ì— ê¸°ë¡í• ì§€ 여부를 ê²°ì •í•œë‹¤. CDC와 flashbackì€ ë¬¼ë¦¬ì 로그를 í•´ì„하여 트랜ìžì…˜ì´ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 논리ì 으로 어떻게 변경했는지 ì¶”ë¡ í•œë‹¤. ì´ë•Œ 물리ì 로그를 í•´ì„하기 위해서는 추가 ì •ë³´ê°€ í•„ìš”í•˜ê³ ì´ë¥¼ 위해 **supplemental_log** 를 사용한다. ì´ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„°ë¥¼ 0보다 í¬ê²Œ ì„¤ì •í•˜ë©´ 기존 트랜ìžì…˜ 로그 외ì—ë„ ë” ë§Žì€ ë¡œê·¸ê°€ ìƒì„±ë˜ê³ ì €ìž¥ë˜ë¯€ë¡œ 성능과 로그 ì €ìž¥ê³µê°„ì— ì˜í–¥ì„ ë¼ì¹œë‹¤. ì´ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„°ë¥¼ 1로 ì„¤ì •í•˜ë©´ 사용ìžê°€ 실행한 DML ë° DDLì„ í•´ì„하는 ë° í•„ìš”í•œ ì •ë³´ê°€ 기ë¡ëœë‹¤. ë˜í•œ ì´ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„°ë¥¼ 2로 ì„¤ì •í•˜ë©´ DML í•´ì„ì— í•„ìš”í•œ ì •ë³´ë§Œ 기ë¡ëœë‹¤. **regexp_engine** **regexp_engine** 는 ì •ê·œì‹ ì—°ì‚°ìžì™€ 함수가 ìˆ˜í–‰í• ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì„ íƒí•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **cppstd** ë˜ëŠ” **re2**\를 ì„¤ì •í• ìˆ˜ ìžˆê³ ê¸°ë³¸ê°’ì€ **re2**\ì´ë‹¤. ì •ê·œ í‘œí˜„ì‹ ê¸°ëŠ¥ì— ê´€í•œ ìžì„¸í•œ ë‚´ìš©ì€ :doc:`/sql/function/regex_fn` ì„ ì°¸ê³ í•œë‹¤. **vacuum_ovfp_check_threshold** ì¸ë±ìФ vacuum ê³¼ì •ì—서 ì½ì€ í•˜ë‚˜ì˜ ë‹¨ë§ ë…¸ë“œ (leaf node) ì— ì—°ê²°ëœ ì˜¤ë²„í”Œë¡œìš° 페ì´ì§€ì˜ 개수가 ì–´ë–¤ 임계값 보다 í° ê²½ìš° 관리 대ìƒìœ¼ë¡œ ì •ë³´ë¥¼ 수집한다. **vacuum_ovfp_check_threshold**\ 로 ì´ ìž„ê³„ ê°’ì„ ì§€ì •í• ìˆ˜ 있다. ê¸°ë³¸ê°’ì€ 1000 페ì´ì§€ì´ë‹¤. **vacuum_ovfp_check_duration** **vacuum_ovfp_check_duration**\는 vacuum ì“°ë ˆë“œì— ì˜í•´ ìˆ˜ì§‘ëœ ì¸ë±ìФ 오버플로우 수와 ê·¸ ê´€ë ¨ ì •ë³´ë¥¼ ìœ ì§€í•˜ëŠ” ê¸°ê°„ì„ ì§€ì •í•œë‹¤. ì„¤ì •í•œ 기간 ë‚´ì— ì—…ë°ì´íЏë˜ì§€ ì•Šì€ ì •ë³´ëŠ” ì œê±°ëœë‹¤. ê°’ì˜ ë‹¨ìœ„ëŠ” ë¶„ì´ë‹¤. **deduplicate_key_level** ì¸ë±ìФ ìƒì„± 구문ì—서 묵시ì 으로 ì§€ì •ë˜ëŠ” *deduplicate level*\ê°’ì„ ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **\-1**\ì´ë‹¤. :doc:`/sql/schema/table_stmt`\, :doc:`/sql/schema/index_stmt`\를 ì°¸ê³ í•œë‹¤. .. note:: * **deduplicate_key_level**\를 **\-1**\로 ì§€ì •í•˜ëŠ” 경우ì—는 CREATE INDEX 구문ì—서 명시ì 으로 *deduplicate level*\ì„ ì§€ì •í•˜ë”ë¼ë„ 무시ëœë‹¤. **print_index_detail** **SHOW CREATE TABLE** 구문과 ê°™ì´ ì¸ë±ìФ 구문 ì •ë³´ë¥¼ 보여줄 때 **WITH** ì ˆì˜ ì˜µì…˜ ì •ë³´ì˜ ì¶œë ¥ 여부를 ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ NOì´ë‹¤. 단, unloaddb 툴ì—서는 ì´ ì„¤ì •ê°’ì˜ ì˜í–¥ì„ 받지 않는다. .. _broker-configuration: 브로커 ì„¤ì • =========== .. _cubrid-broker-conf: cubrid_broker.conf ì„¤ì • 파ì¼ê³¼ 기본 ì œê³µ 파ë¼ë¯¸í„° ------------------------------------------------- 브로커 시스템 파ë¼ë¯¸í„° ^^^^^^^^^^^^^^^^^^^^^^ 다ìŒì€ **cubrid_broker.conf** ì„¤ì • 파ì¼ì— ì‚¬ìš©í• ìˆ˜ 있는 브로커 파ë¼ë¯¸í„°ì´ë‹¤. ê° íŒŒë¼ë¯¸í„°ì— 대한 ì„¤ëª…ì€ :ref:`broker-common-parameters` ë° :ref:`parameter-by-broker` 를 참조한다. ë™ì 으로 ì„¤ì •ê°’ ë³€ê²½ì´ ê°€ëŠ¥í•œ 파ë¼ë¯¸í„°ëŠ” **broker_changer** ìœ í‹¸ë¦¬í‹°ë¥¼ ì´ìš©í•˜ì—¬ 한시ì 으로 ë³€ê²½í• ìˆ˜ 있다. **cubrid broker restart** 로 ì „ì²´ 브로커를 재시작한 후ì—ë„ ê°’ì´ ì ìš©ë˜ë„ë¡ í•˜ë ¤ë©´ **cubrid_broker.conf** ì— ì„¤ì •ëœ ê°’ì„ ë³€ê²½í•´ ë‘어야 한다. +---------------------------------+-------------------------+---------------------------------+--------+------------------------------+-----------+ | ì ìš© 구분 | ìš©ë„ | 파ë¼ë¯¸í„° ì´ë¦„ | 타입 | 기본값 | ë™ì 변경 | +=================================+=========================+=================================+========+==============================+===========+ | :ref:`broker-common-parameters` | ì ‘ì† | ACCESS_CONTROL | bool | no | | | | +---------------------------------+--------+------------------------------+-----------+ | | | ACCESS_CONTROL_FILE | string | | | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 로그 | ADMIN_LOG_FILE | string | log/broker/cubrid_broker.log | | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 브로커 서버(cub_broker) | MASTER_SHM_ID | int | 30,001 | | +---------------------------------+-------------------------+---------------------------------+--------+------------------------------+-----------+ | :ref:`parameter-by-broker` | ì ‘ì† | ACCESS_LIST | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | ACCESS_MODE | string | RW | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | BROKER_PORT | int | 30,000(최대값: 65,535) | | | | +---------------------------------+--------+------------------------------+-----------+ | | | CONNECT_ORDER | string | SEQ | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | ENABLE_MONITOR_HANG | string | OFF | | | | +---------------------------------+--------+------------------------------+-----------+ | | | KEEP_CONNECTION | string | AUTO | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | MAX_NUM_DELAYED_HOSTS_LOOKUP | int | -1 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | PREFERRED_HOSTS | string | | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | RECONNECT_TIME | sec | 600 | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | REPLICA_ONLY | string | OFF | | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 브로커 ì‘ìš© 서버(CAS) | APPL_SERVER_MAX_SIZE | MB | Windows 32비트: 40, | 가능 | | | | | | Windows 64비트: 80, | | | | | | | Linux: 0 (최대값: 2,097,151) | | | | +---------------------------------+--------+------------------------------+-----------+ | | | APPL_SERVER_MAX_SIZE_HARD_LIMIT | MB | 1,024(최대값: 2,097,151) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | APPL_SERVER_PORT | int | BROKER_PORT+1 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | APPL_SERVER_SHM_ID | int | 30,000 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | AUTO_ADD_APPL_SERVER | string | ON | | | | +---------------------------------+--------+------------------------------+-----------+ | | | MAX_NUM_APPL_SERVER | int | 40 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | MIN_NUM_APPL_SERVER | int | 5 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | TIME_TO_KILL | sec | 120 | 가능 | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 트랜ìžì…˜ ë° ì§ˆì˜ | CCI_DEFAULT_AUTOCOMMIT | string | ON | | | | +---------------------------------+--------+------------------------------+-----------+ | | | LONG_QUERY_TIME | sec | 60(최대값: 86,400) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | LONG_TRANSACTION_TIME | sec | 60(최대값: 86,400) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | MAX_PREPARED_STMT_COUNT | int | 2,000(최소값: 1) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | MAX_QUERY_TIMEOUT | sec | 0(최대값: 86,400) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SESSION_TIMEOUT | sec | 300 | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | STATEMENT_POOLING | string | ON | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | JDBC_CACHE | string | OFF | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | JDBC_CACHE_HINT_ONLY | string | OFF | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | JDBC_CACHE_LIFE_TIME | sec | 1000 | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | TRIGGER_ACTION | string | ON | 가능 | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 로그 | ACCESS_LOG | string | OFF | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | ACCESS_LOG_DIR | string | log/broker | | | | +---------------------------------+--------+------------------------------+-----------+ | | | ACCESS_LOG_MAX_SIZE | KB | 10M(최대값: 2G) | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | ERROR_LOG_DIR | string | log/broker/error_log | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | LOG_DIR | string | log/broker/sql_log | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SLOW_LOG | string | ON | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SLOW_LOG_DIR | string | log/broker/sql_log | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SQL_LOG | string | ON | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SQL_LOG_MAX_SIZE | KB | 10000 | 가능 | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 샤드 | SHARD | string | OFF | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_CONNECTION_FILE | string | shard_connection.txt | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_DB_NAME | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_DB_PASSWORD | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_DB_USER | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_IGNORE_HINT | string | OFF | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_KEY_FILE | string | shard_key.txt | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_KEY_FUNCTION_NAME | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_KEY_LIBRARY_NAME | string | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_KEY_MODULAR | int | 256 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_MAX_CLIENTS | int | 256 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_MAX_PREPARED_STMT_COUNT | int | 10,000 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_NUM_PROXY | int | 1 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_CONN_WAIT_TIMEOUT | sec | 8h | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_LOG | string | ERROR | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_LOG_DIR | string | log/broker/proxy_log | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_LOG_MAX_SIZE | KB | 100,000 | 가능 | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_SHM_ID | int | | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SHARD_PROXY_TIMEOUT | sec | 30(ì´ˆ) | | | +-------------------------+---------------------------------+--------+------------------------------+-----------+ | | 기타 | MAX_STRING_LENGTH | int | -1 | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SERVICE | string | ON | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SSL | string | OFF | | | | +---------------------------------+--------+------------------------------+-----------+ | | | SOURCE_ENV | string | cubrid.env | | +---------------------------------+-------------------------+---------------------------------+--------+------------------------------+-----------+ 기본 ì œê³µ 파ë¼ë¯¸í„° ^^^^^^^^^^^^^^^^^^ CUBRID 설치 시 ìƒì„±ë˜ëŠ” 기본 브로커 ì„¤ì • 파ì¼ì¸ **cubrid_broker.conf** ì—는 브로커 파ë¼ë¯¸í„° 중ì—서 반드시 변경해야 í• ì¼ë¶€ 파ë¼ë¯¸í„°ê°€ 기본으로 í¬í•¨ëœë‹¤. 기본으로 í¬í•¨ë˜ì§€ 않는 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì„ ë³€ê²½í•˜ê¸° ì›í• 경우 ì§ì ‘ 추가/편집해서 사용하면 ëœë‹¤. 다ìŒì€ 설치 시 기본으로 ì œê³µë˜ëŠ” **cubrid_broker.conf** íŒŒì¼ ë‚´ìš©ì´ë‹¤. :: [broker] MASTER_SHM_ID =30001 ADMIN_LOG_FILE =log/broker/cubrid_broker.log [%query_editor] SERVICE =ON BROKER_PORT =30000 MIN_NUM_APPL_SERVER =5 MAX_NUM_APPL_SERVER =40 APPL_SERVER_SHM_ID =30000 LOG_DIR =log/broker/sql_log ERROR_LOG_DIR =log/broker/error_log SQL_LOG =ON TIME_TO_KILL =120 SESSION_TIMEOUT =300 KEEP_CONNECTION =AUTO [%BROKER1] SERVICE =ON BROKER_PORT =33000 MIN_NUM_APPL_SERVER =5 MAX_NUM_APPL_SERVER =40 APPL_SERVER_SHM_ID =33000 LOG_DIR =log/broker/sql_log ERROR_LOG_DIR =log/broker/error_log SQL_LOG =ON TIME_TO_KILL =120 SESSION_TIMEOUT =300 KEEP_CONNECTION =AUTO 브로커 ì„¤ì • íŒŒì¼ ê´€ë ¨ 환경 변수 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **CUBRID_BROKER_CONF_FILE** 환경 변수를 사용하여 **cubrid_broker.conf** 파ì¼ì˜ 위치를 ì§€ì •í• ìˆ˜ 있다. 서로 다른 구성으로 여러 ê°œì˜ ë¸Œë¡œì»¤ë¥¼ ì‹¤í–‰í• ë•Œ 사용한다. .. _broker-common-parameters: 공통 ì ìš© 파ë¼ë¯¸í„° ------------------ 다ìŒì€ 브로커 ì „ì²´ì— ê³µí†µìœ¼ë¡œ ì ìš©ë˜ëŠ” 파ë¼ë¯¸í„°ë¡œ [broker] ì•„ëž˜ì— ìž‘ì„±ëœë‹¤. ì ‘ì† ^^^^ **ACCESS_CONTROL** **ACCESS_CONTROL** ì€ ë¸Œë¡œì»¤ì— ì ‘ì†í•˜ëŠ” ì‘ìš© í´ë¼ì´ì–¸íŠ¸ë¥¼ ì œí•œí•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **OFF** ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`limiting-broker-access` ì„ ì°¸ê³ í•œë‹¤. **ACCESS_CONTROL_FILE** **ACCESS_CONTROL_FILE** ì€ ë¸Œë¡œì»¤ì— ì ‘ì†ì„ 허용하는 ë°ì´í„°ë² ì´ìФ ì´ë¦„, ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ID, IP 목ë¡ì„ ì €ìž¥í•œ íŒŒì¼ ì´ë¦„ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. IP 목ë¡ì€ í•˜ë‚˜ì˜ ë¸Œë¡œì»¤ ë‚´ì—서 <*db_name*>:<*db_user*> 별로 최대 256 ë¼ì¸ê¹Œì§€ 작성ë 수 있다. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`limiting-broker-access` ì„ ì°¸ê³ í•œë‹¤. 로그 ^^^^ **ADMIN_LOG_FILE** **ADMIN_LOG_FILE** ì€ CUBRID ë¸Œë¡œì»¤ì˜ êµ¬ë™ì— 관한 시간 기ë¡ì„ ì €ìž¥í•˜ëŠ” 파ì¼ì„ ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **log/broker/cubrid_broker.log** 파ì¼ì´ë‹¤. 브로커 서버(cub_broker) ^^^^^^^^^^^^^^^^^^^^^^^ **MASTER_SHM_ID** **MASTER_SHM_ID** 는 CUBRID 브로커를 관리하기 위해 사용ë˜ëŠ” ê³µìœ ë©”ëª¨ë¦¬ì˜ ID를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, ì´ ê°’ì€ ì‹œìŠ¤í…œ ë‚´ì—서 ìœ ì¼í•œ ê°’ì´ì–´ì•¼ 한다. ê¸°ë³¸ê°’ì€ **30,001** 로 ì„¤ì •ëœë‹¤. .. _parameter-by-broker: 브로커별 파ë¼ë¯¸í„° ----------------- 다ìŒì€ ë¸Œë¡œì»¤ì— ê°œë³„ì 으로 ì ìš©ë˜ëŠ” 파ë¼ë¯¸í„°ë¡œ *[%broker_name]* ì•„ëž˜ì— ê°ê° 작성ëœë‹¤. *broker_name* ì˜ ìµœëŒ€ 길ì´ëŠ” ì˜ë¬¸ 63ìžì´ë‹¤. ì ‘ì† ^^^^ **ACCESS_LIST** **ACCESS_LIST** 는 CUBRID 브로커로 ì ‘ê·¼ì„ í—ˆìš©í•˜ëŠ” ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì˜ IP 주소 리스트를 ì €ìž¥í• íŒŒì¼ ì´ë¦„ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. 210.192.33.*와 210.194.34.*ì¸ IP ì£¼ì†Œì˜ ì ‘ê·¼ì„ í—ˆìš©í•˜ë ¤ë©´ ì´ë¥¼ ìž„ì˜ì˜ 파ì¼(ip_lists.txt)ì— ì €ìž¥í•˜ì—¬ ì´ íŒŒë¼ë¯¸í„°ì˜ 값으로 파ì¼ëª…ì„ ì„¤ì •í•œë‹¤. **ACCESS_MODE** **ACCESS_MODE** 는 ë¸Œë¡œì»¤ì˜ ëª¨ë“œë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **RW** ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`ha-cubrid-broker-conf` 를 ì°¸ê³ í•œë‹¤. **BROKER_PORT** **BROKER_PORT** 는 해당 ë¸Œë¡œì»¤ì˜ í¬íЏ 번호를 ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ 시스템 ë‚´ì—서 ìœ ì¼í•œ ê°’ì´ë©´ì„œ 65,535 ì´í•˜ì˜ ê°’ì´ì–´ì•¼ 한다. **query_editor** ì˜ ë¸Œë¡œì»¤ í¬íŠ¸ëŠ” ê¸°ë³¸ê°’ì´ **30,000** 으로 ì„¤ì •ë˜ë©°, **broker1** ì˜ ë¸Œë¡œì»¤ í¬íŠ¸ëŠ” ê¸°ë³¸ê°’ì´ **33,000** 으로 ì„¤ì •ëœë‹¤. **CONNECT_ORDER** CASê°€ ì—°ê²°í• í˜¸ìŠ¤íŠ¸ 순서를 ê²°ì •í• ë•Œ **$CUBRID_DATABASES/databases.txt** ì— ì„¤ì •ëœ í˜¸ìŠ¤íŠ¸ì—서 순서대로 ì—°ê²°ì„ ì‹œë„í• ì§€ ëžœë¤í•œ 순서대로 ì—°ê²°ì„ ì‹œë„í• ì§€ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **SEQ** ì´ë©° 순서대로 ì—°ê²°ì„ ì‹œë„한다. ì´ ê°’ì´ **RANDOM** ì´ë©´ ëžœë¤í•œ 순서대로 ì—°ê²°ì„ ì‹œë„한다. **PREFERRED_HOSTS** 파ë¼ë¯¸í„° ê°’ì´ ëª…ì‹œë˜ì–´ 있으면 ë¨¼ì € **PREFERRED_HOSTS** ì— ëª…ì‹œëœ í˜¸ìŠ¤íŠ¸ì˜ ìˆœì„œëŒ€ë¡œ ì—°ê²°ì„ ì‹œë„한 후 ì‹¤íŒ¨í• ê²½ìš°ì—ë§Œ **$CUBRID_DATABASES/databases.txt** ì˜ ì„¤ì • ê°’ì„ ì‚¬ìš©í•œë‹¤. **ENABLE_MONITOR_HANG** **ENABLE_MONITOR_HANG** ì€ ì¼ì • 비율 ì´ìƒì˜ CASê°€ 멈춘(hang) 것으로 íŒë‹¨ë˜ë©´ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ í•´ë‹¹ ë¸Œë¡œì»¤ë¡œì˜ ì ‘ì†ì„ ì°¨ë‹¨í• ê²ƒì¸ì§€ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ì´ ê°’ì´ ONì´ë©´ 해당 ê¸°ëŠ¥ì„ ìˆ˜í–‰í•œë‹¤. ê¸°ë³¸ê°’ì€ OFF로, 해당 ê¸°ëŠ¥ì„ ìˆ˜í–‰í•˜ì§€ 않는다. 브로커 프로세스는 CASì˜ ë©ˆì¶¤(hang)ì´ 1ë¶„ ì´ìƒ ì§€ì†ë˜ëŠ” 경우 CAS를 멈춘(hang) ìƒíƒœë¡œ íŒë‹¨í•˜ê³ , 해당 CASì˜ ê°œìˆ˜ì— ë”°ë¼ í•´ë‹¹ 브로커 프로세스가 ë¹„ì •ìƒìœ¼ë¡œ íŒë‹¨ë˜ë©´ ì •ìƒí™”ë˜ê¸° ì „ê¹Œì§€ 해당 브로커로 ì ‘ì†ì„ 시ë„하는 ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ì°¨ë‹¨í•˜ì—¬, ì ‘ì† URLì— ì„¤ì •í•œ 대체 호스트(altHosts)ë¡œì˜ ì ‘ì†ì„ ìœ ë„한다. **KEEP_CONNECTION** **KEEP_CONNECTION** ì€ CAS와 ì‘ìš© í´ë¼ì´ì–¸íЏ 사ì´ì˜ ì—°ê²° ë°©ì‹ì„ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ **ON** / **AUTO** 중 하나로 ì„¤ì •ëœë‹¤. ì´ íŒŒë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ë˜ë©´ 커넥션 단위로 CAS와 연결한다. ë˜í•œ **AUTO** 로 ì„¤ì •ë˜ë©´ CASì˜ ê°œìˆ˜ê°€ í´ë¼ì´ì–¸íЏ 개수보다 ë§Žì€ ê²½ìš° 커넥션 단위로 ì—°ê²°í•˜ê³ , CASì˜ ê°œìˆ˜ê°€ í´ë¼ì´ì–¸íŠ¸ì˜ ê°œìˆ˜ë³´ë‹¤ ì ì€ ê²½ìš° 트랜ìžì…˜ 단위로 연결한다. ê¸°ë³¸ê°’ì€ **AUTO** ì´ë‹¤. **MAX_NUM_DELAYED_HOSTS_LOOKUP** databases.txtì˜ db-hostì— ì—¬ëŸ¬ ëŒ€ì˜ DB 서버를 명시한 HA 환경ì—서 ê±°ì˜ ëª¨ë“ DB 서버ì—서 ë³µì œ ì§€ì—°ì´ ë°œìƒí•˜ëŠ” 경우, **MAX_NUM_DELAYED_HOSTS_LOOKUP** 파ë¼ë¯¸í„°ì—서 명시한 ëŒ€ìˆ˜ì˜ ë³µì œ 지연 서버까지만 ì—°ê²° 여부를 ê²€í† í•œ 후 ì—°ê²°ì„ ê²°ì •í•œë‹¤(ì–´ë–¤ DB ì„œë²„ì˜ ë³µì œ 지연 여부는 standby ìƒíƒœì˜ í˜¸ìŠ¤íŠ¸ë§Œì„ ëŒ€ìƒìœ¼ë¡œ íŒë‹¨í•˜ë©°, :ref:`ha_delay_limit <ha_delay_limit>` 파ë¼ë¯¸í„°ì˜ ì„¤ì •ì— ë”°ë¼ ê²°ì •ë¨). 보다 ìžì„¸í•œ 사í•ì€ :ref:`MAX_NUM_DELAYED_HOSTS_LOOKUP <MAX_NUM_DELAYED_HOSTS_LOOKUP>` ì„ ì°¸ê³ í•œë‹¤. **PREFERRED_HOSTS** **PREFERRED_HOSTS** 는 CASê°€ ìš°ì„ ì 으로 ì—°ê²°í• í˜¸ìŠ¤íŠ¸ 순서를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **PREFERRED_HOSTS** ì— ì„¤ì •ëœ í˜¸ìŠ¤íŠ¸ 순서대로 ì—°ê²°ì„ ì‹œë„했으나 실패하는 경우 **$CUBRID_DATABASES/databases.txt** ì— ì„¤ì •ëœ í˜¸ìŠ¤íŠ¸ 순서대로 ì—°ê²°ì„ ì‹œë„한다. ê¸°ë³¸ê°’ì€ **NULL** ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`ha-cubrid-broker-conf` 를 ì°¸ê³ í•œë‹¤. .. _reconnect_time: **RECONNECT_TIME** íŠ¹ì • ìƒí™©ì—서 **RECONNECT_TIME** 으로 명시한 ì‹œê°„ì´ ê²½ê³¼í•˜ë©´ CASê°€ 다른 DB ì„œë²„ì— ìž¬ì—°ê²°ì„ ì‹œë„한다. ê¸°ë³¸ê°’ì€ 600s(10min)ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. CASê°€ ì„œë²„ì— ìž¬ì—°ê²°ì„ ì‹œë„하는 íŠ¹ì • ìƒí™©ì€ 다ìŒê³¼ 같다. * CASê°€ **PREFERRED_HOSTS** ì— ëª…ì‹œí•œ DB 서버가 아닌 databases.txtì˜ db-hostì— ëª…ì‹œí•œ DB ì„œë²„ì— ì—°ê²°í•œ 경우 * "ACCESS_MODE=RO"(Read Only)ì¸ CASê°€ standby DB 서버가 아닌 active DB ì„œë²„ì— ì—°ê²°í•œ 경우 * CASê°€ ë³µì œ 지연 ìƒíƒœì¸ DB 서버와 연결한 경우 **RECONNECT_TIME** ê°’ì´ 0ì´ë©´ ìž¬ì—°ê²°ì„ ì‹œë„하지 않는다. .. _replica_only: **REPLICA_ONLY** **REPLICA_ONLY** ì˜ ê°’ì´ **ON** ì´ë©´ CASê°€ ë ˆí”Œë¦¬ì¹´ì—ë§Œ ì ‘ì†ëœë‹¤. ê¸°ë³¸ê°’ì€ **OFF** ì´ë‹¤. **REPLICA_ONLY** ì˜ ê°’ì´ **ON** ì´ë”ë¼ë„ **ACCESS_MODE** ì˜ ê°’ì´ **RW** ì´ë©´ ë ˆí”Œë¦¬ì¹´ DBì— ì§ì ‘ ì ‘ì†í•˜ì—¬ 쓰기 ìž‘ì—…ì„ ìˆ˜í–‰í• ìˆ˜ 있다. 단, ë ˆí”Œë¦¬ì¹´ì— ì§ì ‘ 쓰는 ë°ì´í„°ëŠ” ë³µì œë˜ì§€ 않는다. .. note:: ë ˆí”Œë¦¬ì¹´ì— ì§ì ‘ ë°ì´í„°ë¥¼ 쓰는 경우 ë³µì œ 불ì¼ì¹˜ê°€ ë°œìƒí•¨ì— 주ì˜í•´ì•¼ 한다. 브로커 ì‘ìš© 서버(CAS) ^^^^^^^^^^^^^^^^^^^^^ **APPL_SERVER_MAX_SIZE** **APPL_SERVER_MAX_SIZE** 는 CASê°€ 처리하는 프로세스 메모리 ì‚¬ìš©ëŸ‰ì˜ ìµœëŒ€ í¬ê¸°ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 M으로 ì§€ì •ëœë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” ì§„í–‰ ì¤‘ì¸ íŠ¸ëžœìžì…˜ì´ ìžˆì„ ê²½ìš° 사용ìžì— ì˜í•´ ì •ìƒ ì¢…ë£Œ(커밋 í˜¹ì€ ë¡¤ë°±)ë˜ê¸°ë¥¼ ê¸°ë‹¤ë ¸ë‹¤ê°€ 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)ì´ë‹¤. ìµœëŒ€ê°’ì€ Windows ë²„ì „ê³¼ Linux ë²„ì „ ëª¨ë‘ ë™ì¼í•˜ë©° 2,097,151 (MB)ì´ë‹¤. 현재 í”„ë¡œì„¸ìŠ¤ì˜ í¬ê¸°ê°€ **APPL_SERVER_MAX_SIZE** ì˜ ê°’ì„ ì´ˆê³¼í•˜ë©´, 브로커가 해당 CAS를 재구ë™í•œë‹¤. Linux ë²„ì „ì˜ CUBRID는 **APPL_SERVER_MAX_SIZE** ì˜ ê¸°ë³¸ê°’ì´ **0** ì´ê³ , 다ìŒì˜ ê²½ìš°ì— í•´ë‹¹ CAS를 재구ë™í•œë‹¤. * **APPL_SERVER_MAX_SIZE** ì˜ ê°’ì´ 0 ë˜ëŠ” ìŒìˆ˜ì¸ 경우: 현재 í”„ë¡œì„¸ìŠ¤ì˜ í¬ê¸°ê°€ CASì˜ ì´ˆê¸° ë©”ëª¨ë¦¬ì˜ 2ë°°ê°€ ë 때 * **APPL_SERVER_MAX_SIZE** ì˜ ê°’ì´ ì–‘ìˆ˜ì¸ ê²½ìš°: **APPL_SERVER_MAX_SIZE** ì˜ ì„¤ì • ê°’ì„ ì´ˆê³¼í• ë•Œ .. note:: ì´ ê°’ì„ ë„ˆë¬´ 작게 ì„¤ì •í•˜ë©´ CASê°€ 빈번하게 재구ë™ë 수 있으므로 주ì˜í•œë‹¤. ì¼ë°˜ì 으로 **APPL_SERVER_MAX_SIZE_HARD_LIMIT** ì˜ ê°’ì„ **APPL_SERVER_MAX_SIZE** ì˜ ê°’ë³´ë‹¤ í¬ê²Œ ì„¤ì •í•œë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ **APPL_SERVER_MAX_SIZE_HARD_LIMIT** ì˜ ì„¤ëª…ì„ ì°¸ê³ í•œë‹¤. **APPL_SERVER_MAX_SIZE_HARD_LIMIT** **APPL_SERVER_MAX_SIZE_HARD_LIMIT** 는 CASê°€ 처리하는 프로세스 메모리 ì‚¬ìš©ëŸ‰ì˜ ìµœëŒ€ í¬ê¸°ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 M으로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **1,024** (MB)ì´ë©°, ìµœëŒ€ê°’ì€ 2,097,151 (MB)ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” ì§„í–‰ ì¤‘ì¸ íŠ¸ëžœìžì…˜ì´ ìžˆì–´ë„ ì´ë¥¼ ê°•ì œ 종료(롤백)í•˜ê³ CAS를 재구ë™í•˜ëŠ” ë™ìž‘ì— ì˜í–¥ì„ 준다. **APPL_SERVER_MAX_SIZE** 는 **APPL_SERVER_MAX_SIZE_HARD_LIMIT** 와 비슷하지만, ì§„í–‰ ì¤‘ì¸ íŠ¸ëžœìžì…˜ì´ ìžˆì„ ê²½ìš° 사용ìžì— ì˜í•´ ì •ìƒ ì¢…ë£Œ(커밋 í˜¹ì€ ë¡¤ë°±)ë˜ê¸°ë¥¼ ê¸°ë‹¤ë ¸ë‹¤ê°€ CAS를 재구ë™í•˜ëŠ” ë™ìž‘ì— ì˜í–¥ì„ 준다는 ì ì´ ë‹¤ë¥´ë‹¤. .. note:: ì´ ê°’ì„ ë„ˆë¬´ 작게 ì„¤ì •í•˜ë©´ 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** **APPL_SERVER_PORT** 는 Windows ìš´ì˜ì²´ì œì—ë§Œ ì 용가능한 파ë¼ë¯¸í„°ë¡œ, í´ë¼ì´ì–¸íŠ¸ì™€ CASì˜ í†µì‹ í¬íŠ¸ë¥¼ 별ë„로 ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. Linux ìš´ì˜ì²´ì œì—서는 í´ë¼ì´ì–¸íŠ¸ê°€ 브로커와 ì—°ê²°ì„ í•˜ë©´, 브로커는 CAS를 í• ë‹¹í•œ 후 í´ë¼ì´ì–¸íŠ¸ì™€ì˜ ë„¤íŠ¸ì›Œí¬ ì—°ê²°ì„ ê·¸ëŒ€ë¡œ CASì—게 ì „ë‹¬í•˜ê¸° ë•Œë¬¸ì— í´ë¼ì´ì–¸íŠ¸ëŠ” 재 ì ‘ì† ê³¼ì • ì—†ì´ CAS와 í†µì‹ ì´ ê°€ëŠ¥í•˜ë‹¤. ì´ ê²½ìš°, 별ë„ì˜ **APPL_SERVER_PORT** 는 사용ë˜ì§€ 않는다. 반면 Windowsì—서는 ëª¨ë“ CASê°€ ë…립ì ì¸ ë„¤íŠ¸ì›Œí¬ í¬íŠ¸ë¥¼ í• ë‹¹ë°›ì•„ ë„¤íŠ¸ì›Œí¬ ì—°ê²°ì„ ê¸°ë‹¤ë¦¬ê³ ìžˆìœ¼ë©°, í´ë¼ì´ì–¸íŠ¸ê°€ ë¸Œë¡œì»¤ì— ì—°ê²°í•˜ë©´ 브로커는 가용한 CAS로 ì ‘ì†í•˜ê¸° 위한 í¬íЏ 번호를 í´ë¼ì´ì–¸íЏì—게 ì „ë‹¬í•œë‹¤. 순차ì 으로 í´ë¼ì´ì–¸íŠ¸ëŠ” í˜„ìž¬ì˜ ë¸Œë¡œì»¤ì™€ ë„¤íŠ¸ì›Œí¬ ì—°ê²°ì„ ì¢…ë£Œí•˜ê³ ë¸Œë¡œì»¤ì—서 ì „ë‹¬ë°›ì€ í¬íЏ 번호로 CAS와 새ë¡ê²Œ ì ‘ì†ì„ 하게ëœë‹¤. **APPL_SERVER_PORT** 를 별ë„로 ì„¤ì •í•˜ì§€ 않으면 ì´ ê°’ì€ **BROKER_PORT** 파ë¼ë¯¸í„° ê°’ì— 1ì„ ë”한 ê°’ì´ ëœë‹¤. 예를 들어, **BROKER_PORT** ì˜ ê°’ì´ 30,000ì´ê³ **APPL_SERVER_PORT** ì˜ ê°’ì€ ë¯¸ì„¤ì • ìƒíƒœì—서 **MIN_NUM_APPL_SERVER** ì˜ ê°’ì´ 5ì¸ ê²½ìš° 브로커 초기 êµ¬ë™ ì‹œ 5ê°œì˜ CASê°€ ê°ê° 30,001~30,005ì˜ í¬íŠ¸ë¥¼ 사용한다. ë™ì¼ ì¡°ê±´ í•˜ì— **APPL_SERVER_PORT** ì˜ ê°’ë§Œ 35,000ë¼ë©´ 브로커 초기 êµ¬ë™ ì‹œ 5ê°œì˜ CASê°€ ê°ê° 35,000~35,004ì˜ í¬íŠ¸ë¥¼ 사용한다. CASì˜ ìµœëŒ€ 개수가 **cubrid_broker_conf** ì˜ **MAX_NUM_APPL_SERVER** 파ë¼ë¯¸í„°ì— ì˜í•´ ì œí•œë˜ë¯€ë¡œ ì„¤ì •í• ìˆ˜ 있는 CASì˜ í†µì‹ í¬íŠ¸ì˜ ê°œìˆ˜ ì—시 최대 **MAX_NUM_APPL_SERVER** 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ìœ¼ë¡œ ì œí•œëœë‹¤. Windows ìš´ì˜ì²´ì œì—서 ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì™€ CUBRID 브로커 사ì´ì— ë°©í™”ë²½ì´ ì¡´ìž¬í•œë‹¤ë©´ 반드시 **BROKER_PORT** ë° **APPL_SERVER_PORT** ì—서 ì„¤ì •ëœ í†µì‹ í¬íŠ¸ë¥¼ 열어야 한다. .. note:: cub_master, cub_broker í”„ë¡œì„¸ìŠ¤ì˜ ìœ ë‹‰ìŠ¤ ë„ë©”ì¸ ì†Œì¼“ íŒŒì¼ ê²½ë¡œë¥¼ ì§€ì •í•˜ëŠ” **CUBRID_TMP** 환경 ë³€ìˆ˜ì— ëŒ€í•œ ë‚´ìš©ì€ :doc:`/env` ì„ ì°¸ê³ í•œë‹¤. **APPL_SERVER_SHM_ID** **APPL_SERVER_SHM_ID** 는 CASê°€ ì´ìš©í•˜ëŠ” ê³µìœ ë©”ëª¨ë¦¬ ID를 ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ 시스템 ë‚´ì—서 ìœ ì¼í•œ ê°’ì´ì–´ì•¼ 한다. ê¸°ë³¸ê°’ì€ í•´ë‹¹ ë¸Œë¡œì»¤ì˜ í¬íŠ¸ì™€ ë™ì¼í•œ ê°’ì´ë‹¤. **AUTO_ADD_APPL_SERVER** **AUTO_ADD_APPL_SERVER** 는 필요한 경우 CAS를 **MAX_NUM_APPL_SERVER** 값까지 ìžë™ìœ¼ë¡œ ì¦ê°€ì‹œí‚¬ì§€ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ONê³¼ OFF를 가지며, ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. .. _max-num-appl-server: **MAX_NUM_APPL_SERVER** **MAX_NUM_APPL_SERVER** 는 해당 ë¸Œë¡œì»¤ì— ë™ì‹œ ì ‘ì†í• 수 있는 CASì˜ ìµœëŒ€ 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, ê¸°ë³¸ê°’ì€ **40** ì´ë‹¤. **MIN_NUM_APPL_SERVER** **MIN_NUM_APPL_SERVER** 는 해당 ë¸Œë¡œì»¤ì— ëŒ€í•œ ì—°ê²° ìš”ì²ì´ ì—†ë”ë¼ë„ 기본ì 으로 ëŒ€ê¸°í•˜ê³ ìžˆëŠ” CAS í”„ë¡œì„¸ìŠ¤ì˜ ìµœì†Œ 개수를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, ê¸°ë³¸ê°’ì€ **5** ì´ë‹¤. **TIME_TO_KILL** **TIME_TO_KILL** ì€ ìžë™ ì¶”ê°€ëœ CAS 중 ìœ íœ´ ìƒíƒœì˜ CAS를 ì œê±°í•˜ê¸° 위한 기준 ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ë˜ë©°, ê¸°ë³¸ê°’ì€ **120** sì´ë‹¤. ìœ íœ´ ìƒíƒœ(idle)란 ìž‘ì—…ì´ ì—†ì´ ì‰¬ê³ ìžˆëŠ” ìƒíƒœë¡œ, ì´ ìƒíƒœê°€ **TIME_TO_KILL** 시간 ì´ìƒ ìœ ì§€ë˜ë©´ 해당 CAS를 ì œê±°í•œë‹¤. ì´ íŒŒë¼ë¯¸í„°ì— ì„¤ì •ëœ ê°’ì€ ìžë™ ì¶”ê°€ëœ CASì—ë§Œ ì ìš©ë˜ë¯€ë¡œ **AUTO_ADD_APPL_SERVER** 파ë¼ë¯¸í„°ê°€ **ON** ì¸ ê²½ìš°ì—ë§Œ ì ìš©ëœë‹¤. **TIME_TO_KILL** 파ë¼ë¯¸í„°ì˜ ê°’ì„ ë„ˆë¬´ 작게 ì„¤ì •í•˜ë©´ CASì˜ ì œê±°/추가가 너무 빈번하게 ë°œìƒí• 수 있으므로 주ì˜í•œë‹¤. 트랜ìžì…˜ ë° ì§ˆì˜ ^^^^^^^^^^^^^^^^ .. _cci_default_autocommit: **CCI_DEFAULT_AUTOCOMMIT** **CCI_DEFAULT_AUTOCOMMIT** ì€ CCI ì¸í„°íŽ˜ì´ìФ ë˜ëŠ” CCI기반 ì¸í„°íŽ˜ì´ìФ(PHP, OLE DB, Perl, Python, Ruby 등)로 ê°œë°œëœ ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ìžë™ 커밋 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ëŠ” JDBC로 ê°œë°œëœ ì‘ìš© 프로그램ì—는 ì˜í–¥ì„ ë¼ì¹˜ì§€ 않는다. **CCI_DEFAULT_AUTOCOMMIT** 파ë¼ë¯¸í„°ì˜ ê°’ì´ OFFì¸ ê²½ìš° 트랜ìžì…˜ì´ 종료ë 때까지 브로커 ì‘ìš© 서버(CAS) 프로세스를 ì ìœ í•œ ìƒíƒœê°€ ë˜ë¯€ë¡œ, **SELECT** 문 수행 시ì—ë„ fetch 완료 후 반드시 ì»¤ë°‹ì„ ìˆ˜í–‰í• ê²ƒì„ ê¶Œìž¥í•œë‹¤. .. note:: **CCI_DEFAULT_AUTOCOMMIT** 파ë¼ë¯¸í„°ëŠ” 2008 R4.0부터 ì§€ì›í•˜ê¸° ì‹œìž‘í–ˆê³ , ì´ ë•Œ ê¸°ë³¸ê°’ì€ OFF였다. **CCI_DEFAULT_AUTOCOMMIT** ì„ ì„¤ì •í•˜ì§€ ì•Šì€ 2008 R4.0 í˜¹ì€ ê·¸ ì „ ë²„ì „ 사용ìžëŠ” ìžë™ 커밋 모드가 OFFì´ë¯€ë¡œ, 2008 R4.1 ì´ìƒ ë²„ì „ìœ¼ë¡œ ì—…ê·¸ë ˆì´ë“œí•œ 사용ìžê°€ 기존 ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê·¸ëŒ€ë¡œ ì‚¬ìš©í•˜ê³ ìž í•˜ëŠ” 경우, ì´ ê°’ì„ OFF로 ì„¤ì •í•´ì•¼ ì˜ë„하지 ì•Šì€ íŠ¸ëžœìžì…˜ì˜ ìžë™ ì»¤ë°‹ì„ ë°©ì§€í• ìˆ˜ 있다. .. warning:: ODBC 드ë¼ì´ë²„는 **CCI_DEFAULT_AUTOCOMMIT** ì˜ ì„¤ì •ì´ ë¬´ì‹œë˜ì–´ í•ìƒ OFFì¸ ìƒíƒœë¡œ ë™ìž‘하므로, 프로그램ì—서 ìžë™ 커밋 여부를 ì§ì ‘ ì„¤ì •í•´ì•¼ 한다. **LONG_QUERY_TIME** **LONG_QUERY_TIME** ì€ ìž¥ê¸° 실행 질ì˜(long-duration query)로 íŒë‹¨ë ì§ˆì˜ ì‹¤í–‰ ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **60** (ì´ˆ)ì´ê³ , ìµœëŒ€ê°’ì€ 86,400(하루)ì´ë‹¤. ì–´ë–¤ 질ì˜ë¥¼ ìˆ˜í–‰í• ë•Œ ì´ ê°’ì„ ì´ˆê³¼í•œ ì‹œê°„ì´ ì†Œìš”ë˜ëŠ” 경우, "cubrid broker status" ëª…ë ¹ì—서 ì¶œë ¥í•˜ëŠ” LONG-Qì˜ ê°’ì´ í•˜ë‚˜ ì¦ê°€í•˜ê³ , 해당 SQLì€ CASì˜ SQL SLOW 로그 파ì¼($CUBRID/log/broker/sql_log/\*.slow.log)ì— ê¸°ë¡ëœë‹¤. :ref:`SLOW_LOG <slow-log>` 파ë¼ë¯¸í„°ë¥¼ ì°¸ê³ í•œë‹¤. 소수ì ì„ ì‚¬ìš©í•˜ì—¬ 밀리초(msec) ë‹¨ìœ„ì˜ ê°’ì„ ì„¤ì •í• ìˆ˜ 있다. 예를 들어 500밀리초로 ì„¤ì •í•˜ë ¤ë©´ ê°’ì„ 0.5로 ì„¤ì •í•œë‹¤. 파ë¼ë¯¸í„° ê°’ì„ **0** 으로 ì„¤ì •í•˜ë©´ 장기 실행 질ì˜ë¥¼ íŒë‹¨í•˜ì§€ 않는다. **LONG_TRANSACTION_TIME** **LONG_TRANSACTION_TIME** ì€ ìž¥ê¸° 실행 트랜ìžì…˜(long-duration transaction)으로 íŒë‹¨ë 트랜ìžì…˜ì˜ 실행 ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **60** (ì´ˆ)ì´ê³ , ìµœëŒ€ê°’ì€ 86,400(하루)ì´ë‹¤. 소수ì ì„ ì‚¬ìš©í•˜ì—¬ 밀리초(msec) ë‹¨ìœ„ì˜ ê°’ì„ ì„¤ì •í• ìˆ˜ 있다. 예를 들어 ê°’ì„ 0.5로 ì„¤ì •í•˜ì—¬ 500밀리초로 ì„¤ì •í• ìˆ˜ 있다. 파ë¼ë¯¸í„° ê°’ì„ **0** 으로 ì„¤ì •í•˜ë©´ 장기 실행 트랜ìžì…˜ì„ íŒë‹¨í•˜ì§€ 않는다. .. _max-prepared-stmt-count: **MAX_PREPARED_STMT_COUNT** **MAX_PREPARED_STMT_COUNT** ì€ ì‚¬ìš©ìž(ì‘ìš© 프로그램) ì ‘ì† ë‹¹ 허용하는 prepared statementì˜ ê°œìˆ˜ë¥¼ ì œí•œí•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **2,000** ì´ë©° ìµœì†Œê°’ì€ 1ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì„ ì‚¬ìš©ìžê°€ ì ì ˆížˆ ì§€ì •í•¨ìœ¼ë¡œì¨, ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ìž‘ì„± 실수로 ì¸í•´ ì‹œìŠ¤í…œì´ í—ˆìš©í•˜ëŠ” 메모리를 초과하여 prepared statement ë¬¸ì„ ìƒì„±í•˜ëŠ” ê²ƒì„ ì‚¬ì „ì— ë°©ì§€í• ìˆ˜ 있다. .. note:: **broker_changer** ëª…ë ¹ì„ ì´ìš©í•˜ì—¬ **MAX_PREPARED_STMT_COUNT** ì˜ ê°’ì„ ë™ì 으로 ë³€ê²½í•˜ê³ ìž í•˜ëŠ” 경우 ì´ì „ì˜ ì„¤ì • 값보다 í° ê°’ìœ¼ë¡œ ì„¤ì •í•˜ëŠ” 경우만 허용하며, ì´ì „ì˜ ì„¤ì • 값보다 ìž‘ì€ ê°’ìœ¼ë¡œ ì„¤ì •í•˜ëŠ” ê²ƒì€ í—ˆìš©í•˜ì§€ 않는다. **MAX_QUERY_TIMEOUT** **MAX_QUERY_TIMEOUT** ì€ ì§ˆì˜ ìˆ˜í–‰ì˜ íƒ€ìž„ì•„ì›ƒì„ ì„¤ì •í•˜ëŠ” 브로커 파ë¼ë¯¸í„°ë¡œ, ì§ˆì˜ ìˆ˜í–‰ì„ ì‹œìž‘í•œ 후 ì§€ì • ì‹œê°„ì„ ì´ˆê³¼í•˜ë©´ ìˆ˜í–‰í•˜ë˜ ì§ˆì˜ë¥¼ ë©ˆì¶”ê³ ë¡¤ë°±í•œë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **0** ì´ë©°, 무한 대기를 ì˜ë¯¸í•œë‹¤. ê°’ì˜ ë²”ìœ„ëŠ” 0부터 86400ì´ˆ(1ì¼)까지ì´ë‹¤. ì‘ìš© 프로그램ì—서 ì§ˆì˜ íƒ€ìž„ì•„ì›ƒì„ ì„¤ì •í•œ 경우, 0ì„ ì œì™¸í•˜ê³ **MAX_QUERY_TIMEOUT** ê°’ê³¼ ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ì§ˆì˜ íƒ€ìž„ì•„ì›ƒ ê°’ 중 ìž‘ì€ ê°’ì„ ì 용한다. .. note:: CCI ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ì§ˆì˜ íƒ€ìž„ì•„ì›ƒ ì„¤ì •ì€ :c:func:`cci_connect_with_url` 함수, :c:func:`cci_set_query_timeout` 함수를 ì°¸ê³ í•˜ë©°, JDBC ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ì§ˆì˜ íƒ€ìž„ì•„ì›ƒ ì„¤ì •ì€ **setQueryTimeout** 메서드를 ì°¸ê³ í•œë‹¤. **SESSION_TIMEOUT** **SESSION_TIMEOUT** ì€ ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì— ëŒ€í•œ CASì˜ ì„¸ì…˜ 타임 아웃 ê°’ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **300** (ì´ˆ)ì´ë‹¤. 트랜ìžì…˜ 시작 ì´í›„ 커밋 í˜¹ì€ ë¡¤ë°±í•˜ì§€ ì•Šì€ ì±„ë¡œ 아무런 ìš”ì²ì´ 없는 ìƒíƒœì—서 ì´ íŒŒë¼ë¯¸í„°ê°€ ì„¤ì •í•œ ì‹œê°„ì„ ì´ˆê³¼í•˜ë©´ 해당 ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì™€ CAS ê°„ì˜ ì ‘ì†ì´ 종료ëœë‹¤. **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. **JDBC_CACHE** **JDBC_CACHE** 는 ê²°ê³¼ ìºì‹œ ê¸°ëŠ¥ì˜ ì‚¬ìš© 여부를 ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ 기본 ê°’ì€ **OFF** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„° ê°’ì„ **ON** 으로 ì„¤ì •í•˜ë©´ JDBCì˜ ëª¨ë“ SELECT 질ì˜ëŠ” **JDBC_CACHE_LIFE_TIME** 으로 ì„¤ì •ëœ ì‹œê°„ ë™ì•ˆ ìºì‹œëœë‹¤. **JDBC_CACHE_HINT_ONLY** **JDBC_CACHE_HINT_ONLY** 는 ê²°ê³¼ ìºì‹œ ê¸°ëŠ¥ì„ ì§ˆì˜ ížŒíŠ¸ /\*+ JDBC_CACHE \*/ì— ì˜í•´ì„œë§Œ ì‚¬ìš©í• ì§€ì˜ ì—¬ë¶€ë¥¼ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ 기본 ê°’ì€ **OFF** ì´ë‹¤. ì§ˆì˜ ížŒíŠ¸ê°€ ì£¼ì–´ì¡Œì„ ë•Œ ë™ìž‘ì€ JDBC_CACHE ì„¤ì •ê³¼ ë™ì¼í•˜ë‹¤. **JDBC_CACHE_LIFE_TIME** **JDBC_CACHE_HINT_ONLY** 는 JDBC í´ë¼ì´ì–¸íŠ¸ì˜ ê²°ê³¼ ìºì‹œ ìœ ì§€ ì‹œê°„ì„ ì„¤ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ 기본 ê°’ì€ 1000(ì´ˆ)ì´ë‹¤. ìºì‹œ ìœ ì§€ 시간 ë™ì•ˆì—ë§Œ ê²°ê³¼ ìºì‹œëŠ” ìœ íš¨í•˜ë‹¤. ìºì‹œ ìœ ì§€ ì‹œê°„ì´ ì§€ë‚œ 후ì—는 ìºì‹œë˜ì—ˆë˜ ê²°ê³¼ë“¤ì€ ë” ì´ìƒ ì‚¬ìš©í• ìˆ˜ 없으며 ì§ˆì˜ ê²°ê³¼ëŠ” 다시 ìºì‹œëœë‹¤. ìºì‹œ ìœ ì§€ ì‹œê°„ì€ **JDBC_CACHE** 나 **JDBC_CACHE_HINT_ONLY** 파ë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ë˜ì–´ 있어야만 ë™ìž‘한다. **주ì˜** **JDBC_CACHE** 와 **JDBC_CACHE_HINT_ONLY**, **JDBC_CACHE_LIFE_TIME** 파ë¼ë¯¸í„° ì„¤ì •ì€ ì‹œìŠ¤í…œ 파ë¼ë¯¸í„° **max_query_cache_entries** 와 **query_cache_size_in_pages** ê°€ 0보다 í° ê°’ìœ¼ë¡œ ì„¤ì •ë˜ì—ˆì„ 때만 ì˜ë¯¸ë¥¼ 가진다. JDBC í´ë¼ì´ì–¸íЏ ê²°ê³¼ ìºì‹œê°€ ë™ìž‘하기 위해서는 앞서 ì–¸ê¸‰ëœ 3ê°œì˜ JDBCê´€ë ¨ 파ë¼ë¯¸í„° ì„¤ì •ê³¼ 함께 SELECT 질ì˜ê°€ 반드시 ì§ˆì˜ ížŒíŠ¸ /\*+ QUERY CACHE \*/를 í¬í•¨í•˜ê³ 있어야 한다. .. _trigger_action: **TRIGGER_ACTION** ì´ íŒŒë¼ë¯¸í„°ë¥¼ ì§€ì •í•œ ë¸Œë¡œì»¤ì— ëŒ€í•´ íŠ¸ë¦¬ê±°ì˜ ë™ìž‘ì„ ì¼œê±°ë‚˜ ëˆë‹¤. **ON** ë˜ëŠ” **OFF** 로 ê°’ì„ ì§€ì •í•˜ë©°, ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. 로그 ^^^^ **ACCESS_LOG** **ACCESS_LOG** 는 해당 ë¸Œë¡œì»¤ì˜ ì ‘ì† ë¡œê·¸ë¥¼ ì €ìž¥í• ê²ƒì¸ì§€ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **OFF** ì´ë‹¤. 브로커 ì ‘ì† ë¡œê·¸ 파ì¼ëª…ì€ *broker_name*\ **.access**\ ì´ê³ , **$CUBRID/log/broker** ë””ë ‰í„°ë¦¬ì— ì €ìž¥ëœë‹¤. **ACCESS_LOG_DIR** **ACCESS_LOG_DIR** ì€ ë¸Œë¡œì»¤ ì ‘ì† ë¡œê·¸(**ACCESS_LOG**) 파ì¼ì´ ìƒì„±ë˜ëŠ” ë””ë ‰í† ë¦¬ë¥¼ ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **log/broker** ì´ë‹¤. **ACCESS_LOG_MAX_SIZE** **ACCESS_LOG_MAX_SIZE** 는 브로커 ì ‘ì† ë¡œê·¸(**ACCESS_LOG**) 파ì¼ì˜ 최대 í¬ê¸°ë¥¼ ì§€ì •í•˜ë©°, 브로커 ì ‘ì† ë¡œê·¸ 파ì¼ì´ ì§€ì •í•œ í¬ê¸°ë³´ë‹¤ 커지면 *broker_name*\ **.access.**\ *YYYYMMDDHHMISS* 형ì‹ì˜ ì´ë¦„으로 ë°±ì—…ëœ í›„ 새 파ì¼(`broker_name`.\ **access**)ì— ë¡œê·¸ê°€ 기ë¡ëœë‹¤. ê¸°ë³¸ê°’ì€ 10M ì´ê³ , 최대 2G로 ì„¤ì •í• ìˆ˜ 있으며, 브로커 구ë™ì¤‘ ë™ì 으로 ë³€ê²½ì´ ê°€ëŠ¥í•˜ë‹¤. **ERROR_LOG_DIR** **ERROR_LOG_DIR** ì€ ë¸Œë¡œì»¤ì— ëŒ€í•œ ì—러 로그가 ì €ìž¥ë˜ëŠ” ë””ë ‰í„°ë¦¬ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, ê¸°ë³¸ê°’ì€ **log/broker/error_log** ì´ë‹¤. 브로커 ì—러 로그 파ì¼ëª…ì€ *broker_ name_id.err*\ ì´ë‹¤. **LOG_DIR** **LOG_DIR** ì€ SQL 로그가 ì €ìž¥ë˜ëŠ” ë””ë ‰í„°ë¦¬ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, ê¸°ë³¸ê°’ì€ **log/broker/sql_log** ì´ë‹¤. SQL 로그가 기ë¡ë˜ëŠ” 파ì¼ëª…ì€ *broker_name_id.sql.log* ì´ë‹¤. .. _slow-log: **SLOW_LOG** SLOW SQL 로깅 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. ì´ ê°’ì´ **ON** ì´ë©´ **LONG_QUERY_TIME** ì‹œê°„ì„ ì´ˆê³¼í•œ 장기 실행(long-duration query) 질ì˜ë¬¸ ë˜ëŠ” ì—러가 ë°œìƒí•œ 질ì˜ë¬¸ì´ SLOW SQL 로그 파ì¼ì— ì €ìž¥ëœë‹¤. ìƒì„±ë˜ëŠ” 파ì¼ì˜ ì´ë¦„ì€ *broker_name_id.slow.log* ì´ë©°, **SLOW_LOG_DIR** ì´í•˜ì— ìƒì„±ëœë‹¤. **SLOW_LOG_DIR** SLOW SQL 로그 파ì¼ì´ ìƒì„±ë˜ëŠ” ë””ë ‰í„°ë¦¬ë¥¼ ì§€ì •í•œë‹¤. ê¸°ë³¸ê°’ì€ **log/broker/sql_log** ì´ë‹¤. .. _sql-log: **SQL_LOG** **SQL_LOG** 는 ì‘ìš© í´ë¼ì´ì–¸íŠ¸ì˜ ìš”ì²ì— ë”°ë¼ CASê°€ 처리한 SQL ë¬¸ì— ëŒ€í•´ ì–´ë–¤ 로그를 기ë¡í• 것ì¸ì§€ ê²°ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. ì´ íŒŒë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ë˜ë©´, ëª¨ë“ ë¡œê·¸ë¥¼ 기ë¡í•œë‹¤. SQL 로그가 기ë¡ë˜ëŠ” 파ì¼ëª…ì€ *broker_name_id.sql.log* ì´ë©°, 설치 ë””ë ‰í„°ë¦¬ì˜ **log/broker/sql_log** ë””ë ‰í„°ë¦¬ì— ìƒì„±ëœë‹¤. 파ë¼ë¯¸í„° ê°’ì€ ë‹¤ìŒê³¼ 같다. * **OFF** : ëª¨ë“ ë¡œê·¸ë¥¼ 기ë¡í•˜ì§€ ì•ŠìŒ * **ERROR** : ì—러가 ë°œìƒí•œ 질ì˜ì— 대한 로그만 ê¸°ë¡ * **NOTICE** : ì„¤ì •ëœ ì‹œê°„ì„ ì´ˆê³¼í•œ 장기 실행 질ì˜/트랜ìžì…˜ì˜ 로그, ì—러가 ë°œìƒí•œ 질ì˜ì— 대한 로그 ê¸°ë¡ * **TIMEOUT** : ì„¤ì •ëœ ì‹œê°„ì„ ì´ˆê³¼í•œ 장기 실행 질ì˜/트랜ìžì…˜ì˜ 로그 ê¸°ë¡ * **ON** / **ALL** : ëª¨ë“ ë¡œê·¸ ê¸°ë¡ **SQL_LOG_MAX_SIZE** **SQL_LOG_MAX_SIZE** 는 SQL 로그 파ì¼ê³¼ SLOW SQL 로그 파ì¼ì˜ 최대 í¬ê¸°ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, G로 단위를 ë¶™ì¼ ìˆ˜ 있으며, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 K로 ì§€ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **10,000** (KB)ì´ë‹¤. * **SQL_LOG** 파ë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ëœ ê²½ìš°ì— ìƒì„±ë˜ëŠ” SQL 로그 파ì¼ì˜ í¬ê¸°ê°€ 파ë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì— ë„달하면 *broker_name_id.sql.log.bak* ì´ ìƒì„±ëœë‹¤. * **SLOW_LOG** 파ë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ëœ ê²½ìš°ì— ìƒì„±ë˜ëŠ” SLOW SQL 로그 파ì¼ì˜ í¬ê¸°ê°€ ì´ íŒŒë¼ë¯¸í„°ì˜ ì„¤ì •ê°’ì— ë„달하면 *broker_name_id.slow.log.bak* ì´ ìƒì„±ëœë‹¤. 샤드 ^^^^ SHARD ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´ **cubrid_broker.conf.shard**\ 를 ì°¸ê³ í•˜ì—¬ **cubrid_broker.conf**\ ì— ë‹¤ìŒ íŒŒë¼ë¯¸í„°ë“¤ì„ ì„¤ì •í•´ì•¼ 한다. **SHARD** SHARD ê¸°ëŠ¥ì˜ í™œì„±í™” 여부를 ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. **ON** ë˜ëŠ” **OFF**\로 ì„¤ì •í•˜ë©°, ê¸°ë³¸ê°’ì€ **OFF**\ ì´ë‹¤. **SHARD_CONNECTION_FILE** shard ì—°ê²° 파ì¼ì˜ 경로ì´ë‹¤. shard ì—°ê²° 파ì¼ì€ **$CUBRID/conf** ë‚´ì— ìœ„ì¹˜í•´ì•¼ 한다. ìžì„¸í•œ ì„¤ëª…ì€ :ref:`shard ì—°ê²° íŒŒì¼ <shard-connection-file>` ì„ ì°¸ê³ í•œë‹¤. **SHARD_DB_NAME** shard DBì˜ ì´ë¦„으로서 ì‘ìš©ì˜ ì—°ê²° ìš”ì²ì´ ìœ íš¨í•œì§€ 검사하는 ë° ì‚¬ìš©ëœë‹¤. **SHARD_DB_PASSWORD** backend shard DBì˜ ì‚¬ìš©ìž ë¹„ë°€ë²ˆí˜¸ë¡œì„œ, CAS 프로세스ì—서 backend DBMS와 ì—°ê²°ì„ ìˆ˜í–‰í•˜ëŠ”ë° ì‚¬ìš©ë˜ë©°, ì‘ìš©ì˜ ì—°ê²° ìš”ì²ì´ ìœ íš¨í•œì§€ 검사하는 ë°ì—ë„ ì‚¬ìš©ëœë‹¤. ëª¨ë“ shard DBì˜ ì‚¬ìš©ìž ë¹„ë°€ë²ˆí˜¸ëŠ” ë™ì¼í•´ì•¼ 한다. cubrid_broker.confì— **SHARD_DB_PASSWORD**\ ì˜ ê°’ì„ ë…¸ì¶œì‹œí‚¤ê³ ì‹¶ì§€ ì•Šì€ ê²½ìš° 환경 변수를 ì‚¬ìš©í• ìˆ˜ 있다. 환경 변수 ì´ë¦„ì˜ í¬ë§·ì€ <*broker_name*>\ **_SHARD_DB_PASSWORD**\ ì´ê³ , <*broker_name*>ì€ í•ìƒ ëŒ€ë¬¸ìžë¡œ 변환ë˜ì–´ì•¼ 한다. 예를 들어, ë¸Œë¡œì»¤ì˜ ì´ë¦„ì´ *shard1*\ ì´ë¼ë©´ shard DB 암호를 ì„¤ì •í•˜ëŠ” 환경 변수 ì´ë¦„ì€ **SHARD1_SHARD_DB_PASSWORD**\ ê°€ ëœë‹¤. 단, "cubrid broker restart" ëª…ë ¹ìœ¼ë¡œ SHARD ê¸°ëŠ¥ì´ ìž¬êµ¬ë™ë˜ëŠ” 경우 **SHARD_DB_PASSWORD**\ ì˜ í™˜ê²½ 변수 ë˜ëŠ” cubrid_broker.confì˜ **SHARD_DB_PASSWORD** 파ë¼ë¯¸í„° ê°’ì´ ë°˜ë“œì‹œ ì„¤ì •ë˜ì–´ 있어야 한다. :: export SHARD1_SHARD_DB_PASSWORD=shard123 .. note:: SHARD_DB_USER/SHARD_DB_PASSWORD 파ë¼ë¯¸í„°ëŠ” ì œê±°ë ì˜ˆì •(deprecated)ì´ë¯€ë¡œ, ì‘ìš© í”„ë¡œê·¸ëž¨ì„ í†µí•´ ì ‘ì† ì •ë³´ë¥¼ ìž…ë ¥í• ê²ƒì„ ê¶Œìž¥í•œë‹¤. **SHARD_DB_USER** backend shard DBì˜ ì‚¬ìš©ìž ì´ë¦„으로서, CAS 프로세스ì—서 backend DBMS와 ì—°ê²°ì„ ìˆ˜í–‰í•˜ëŠ”ë° ì‚¬ìš©ë˜ë©°, ì‘ìš©ì˜ ì—°ê²° ìš”ì²ì´ ìœ íš¨í•œì§€ 검사하는 ë°ì—ë„ ì‚¬ìš©ëœë‹¤. ëª¨ë“ shard DBì˜ ì‚¬ìš©ìž ì´ë¦„ì€ ë™ì¼í•´ì•¼ 한다. .. note:: SHARD_DB_USER/SHARD_DB_PASSWORD 파ë¼ë¯¸í„°ëŠ” ì œê±°ë ì˜ˆì •(deprecated)ì´ë¯€ë¡œ, ì‘ìš© í”„ë¡œê·¸ëž¨ì„ í†µí•´ ì ‘ì† ì •ë³´ë¥¼ ìž…ë ¥í• ê²ƒì„ ê¶Œìž¥í•œë‹¤. **SHARD_IGNORE_HINT** ì´ ê°’ì´ ONì´ë©´ íŠ¹ì • shard로 연결하기 위해 ì œê³µë˜ëŠ” 힌트가 무시ë˜ê³ , ì •í•´ì§„ ê·œì¹™ì— ë”°ë¼ ì ‘ì†í• ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì„ íƒí•œë‹¤. ê¸°ë³¸ê°’ì€ **OFF** ì´ë‹¤. ëª¨ë“ ë°ì´í„°ë² ì´ìŠ¤ê°€ ê°™ì€ ë°ì´í„°ë¡œ ë³µì œë˜ì–´ 있는 ìƒíƒœì—서 ì½ê¸° 부하를 ìžë™ìœ¼ë¡œ 로드 밸런싱하여 ì²˜ë¦¬í•˜ê³ ìž í• ë•Œ ì‚¬ìš©í• ìˆ˜ 있는 ë°©ì‹ì´ë‹¤. 예를 들어 ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ë¶€í•˜ë¥¼ 여러 ê°œì˜ ë³µì œ 노드 중 í•˜ë‚˜ì— ì ‘ì†í•˜ê³ ìž í• ë•Œ íŠ¹ì • shard í•˜ë‚˜ì˜ ì—°ê²°ë§Œ ì œê³µí•˜ë©´ ì–´ëŠ ë…¸ë“œ(ë°ì´í„°ë² ì´ìФ)ì— ì—°ê²°í• ì§€ëŠ” proxyê°€ ìžë™ìœ¼ë¡œ ê²°ì •í•œë‹¤. **SHARD_KEY_FILE** shard key ì„¤ì • ì •ë³´ 파ì¼ì˜ 경로ì´ë‹¤. shard key ì„¤ì • 파ì¼ì€ **$CUBRID/conf** ë‚´ì— ìœ„ì¹˜í•´ì•¼ 한다. ìžì„¸í•œ ì„¤ëª…ì€ :ref:`shard key ì„¤ì • íŒŒì¼ <shard-key-configuration-file>` ì„ ì°¸ê³ í•œë‹¤. **SHARD_KEY_FUNCTION_NAME** shard keyì— ëŒ€í•œ ì‚¬ìš©ìž í•´ì‹œ í•¨ìˆ˜ì˜ ì´ë¦„ì„ ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ì´ë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`setting-user-defined-hash-function` 를 ì°¸ê³ í•œë‹¤. **SHARD_KEY_LIBRARY_NAME** shard keyì— ëŒ€í•œ ì‚¬ìš©ìž í•´ì‹œ 함수를 ì§€ì •í•˜ê¸° 위해 실행 ì‹œê°„ì— ë¡œë”© 가능한 ë¼ì´ë¸ŒëŸ¬ë¦¬ 경로를 ì§€ì •í•œë‹¤. **SHARD_KEY_LIBRARY_NAME** 파ë¼ë¯¸í„°ê°€ ì„¤ì •ëœ ê²½ìš° 반드시 **SHARD_KEY_FUNCTION_NAME** 파ë¼ë¯¸í„°ë„ ì„¤ì •ë˜ì–´ì•¼ 한다. ìžì„¸í•œ ë‚´ìš©ì€ :ref:`setting-user-defined-hash-function` ì„ ì°¸ê³ í•œë‹¤. **SHARD_KEY_MODULAR** ë‚´ìž¥ëœ shard key 해시 함수 ê²°ê³¼ì˜ ë²”ìœ„ë¥¼ ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œì„œ, 기본 shard key 해시 í•¨ìˆ˜ì˜ ê²°ê³¼ëŠ” shard_key(ì •ìˆ˜í˜•) % SHARD_KEY_MODULARì´ë‹¤. ìµœì†Œê°’ì€ 1, ìµœëŒ€ê°’ì€ 256ì´ë‹¤. ê´€ë ¨ëœ ë‚´ìš©ì€ :ref:`shard key ì„¤ì • íŒŒì¼ <shard-key-configuration-file>` ê³¼ :ref:`setting-user-defined-hash-function` ì„ ì°¸ê³ í•œë‹¤. **SHARD_MAX_CLIENTS** proxy로 ë™ì‹œì— ì—°ê²° 가능한 ì‘ìš©ì˜ ê°œìˆ˜ì´ë‹¤. ê¸°ë³¸ê°’ì€ 256ì´ë©°, ìµœëŒ€ê°’ì€ proxy 당 10,000ì´ë‹¤. .. _shard-max-prepared-stmt-count: **SHARD_MAX_PREPARED_STMT_COUNT** proxyê°€ 관리하는 statement poolì˜ ìµœëŒ€ í¬ê¸°ì´ë‹¤. ê¸°ë³¸ê°’ì€ 10,000ì´ë‹¤. **SHARD_NUM_PROXY** proxy í”„ë¡œì„¸ìŠ¤ì˜ ê°œìˆ˜ì´ë‹¤. ê¸°ë³¸ê°’ì€ 1 ì´ë©°, ìµœëŒ€ê°’ì€ 8ì´ë‹¤. **SHARD_PROXY_CONN_WAIT_TIMEOUT** ì´ íŒŒë¼ë¯¸í„°ë¡œ 명시한 시간 ë™ì•ˆ 아무런 ìš”ì²ì´ 없으면 CASê°€ DBì™€ì˜ ì ‘ì†ì„ ëŠëŠ”ë‹¤. ê¸°ë³¸ê°’ì€ **8h**\ ì´ë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. ì˜ˆì „ 비밀번호 ì •ë³´ë¥¼ 지닌 CAS는 ë” ì´ìƒ ì‚¬ìš©í• ìˆ˜ 없으므로 종료ë˜ì–´ì•¼ ë˜ëŠ”ë°, ì´ ê¸°ëŠ¥ì€ ì´ëŸ¬í•œ CASê°€ 불필요하게 ê³„ì† ìœ ì§€ë˜ëŠ” ê²ƒì„ ë°©ì§€í•œë‹¤. **SHARD_PROXY_LOG** proxy 로그 ë ˆë²¨ë¡œì„œ 다ìŒì˜ ê°’ 중 하나로 ì„¤ì • 가능하다. 프ë¡ì‹œ 로그 ë ˆë²¨ ì •ì±…: ìƒìœ„ levelì„ ì„¤ì •í•˜ë©´ í•˜ìœ„ì˜ ëª¨ë“ ë¡œê·¸ê°€ 남는다. * 예) SCHEDULEì„ ì„¤ì •í•˜ë©´, ERROR | TIMEOUT | NOTICE | SHARD | SCHEDULE 로그를 ëª¨ë‘ ë‚¨ê¸´ë‹¤. * **ALL**: ëª¨ë“ ë¡œê·¸ ê¸°ë¡ * **ON**: ëª¨ë“ ë¡œê·¸ ê¸°ë¡ * **SHARD**: shard DB ì„ íƒê³¼ ì²˜ë¦¬ì— ëŒ€í•œ 로그 ê¸°ë¡ * **SCHEDULE**: 작업 í• ë‹¹ì— ëŒ€í•œ 로그 ê¸°ë¡ * **NOTICE**: 주요한 ì•Œë¦¼ì— ëŒ€í•œ 로그 ê¸°ë¡ * **TIMEOUT**: 임계 시간 ì´ˆê³¼ì— ëŒ€í•œ 로그 ê¸°ë¡ * **ERROR**: ì—러 로그 ê¸°ë¡ * **NONE**: 로그 기ë¡í•˜ì§€ ì•ŠìŒ * **OFF**: 로그 기ë¡í•˜ì§€ ì•ŠìŒ **SHARD_PROXY_LOG_DIR** proxy 로그를 ì €ìž¥í• ë””ë ‰í„°ë¦¬ 경로ì´ë‹¤. **SHARD_PROXY_LOG_MAX_SIZE** proxy 로그 파ì¼ì˜ 최대í¬ê¸°ì´ë‹¤. ê°’ ë’¤ì— B, K, M, Gì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° Bytes, Kilobytes, Megabytes, Gigabytes를 ì˜ë¯¸í•œë‹¤. 단위 ìƒëžµ 시 K로 ì§€ì •ëœë‹¤. 최대 1,000,000(KB)까지 ì„¤ì •í• ìˆ˜ 있다. **SHARD_PROXY_SHM_ID** proxyê°€ ì´ìš©í•˜ëŠ” ê³µìœ ë©”ëª¨ë¦¬ ID 를 ì§€ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ 시스템 ë‚´ì—서 ìœ ì¼í•œ ê°’ì´ì–´ì•¼ 한다. **SHARD_PROXY_TIMEOUT** proxyì—서 CASê°€ 사용 가능해지기를 기다리거나 statementê°€ 준비(prepare)ë˜ê¸°ë¥¼ 기다리는 최대 시간. 대기 ì‹œê°„ì´ ë§Œë£Œë˜ë©´ 드ë¼ì´ë²„ì˜ ìš”ì²ì„ ì—러 처리함. 기본값: 30(ì´ˆ). ì´ ê°’ì´ 0ì´ë©´ 시스템 파ë¼ë¯¸í„° query_timeoutì˜ ê°’ì— ì˜í•´ 대기 ì‹œê°„ì´ ê²°ì •ë˜ë©°, query_timeoutì˜ ê°’ë„ 0ì´ë©´ 무한 대기한다. SHARD_PROXY_TIMEOUTì˜ ê°’ì´ 0보다 í¬ë©´ query_timeout ê°’ê³¼ SHARD_PROXY_TIMEOUT ê°’ 중 í° ê°’ì— ì˜í•´ 대기 ì‹œê°„ì´ ê²°ì •ëœë‹¤. ê°’ ë’¤ì— ms, s, min, hì˜ ë‹¨ìœ„ ì§€ì •ì´ ê°€ëŠ¥í•˜ë©°, ê°ê° milliseconds, seconds, minutes, hours를 ì˜ë¯¸í•œë‹¤. 단위가 ìƒëžµë˜ë©´ s로 ì§€ì •ëœë‹¤. .. note:: **proxy ì„¤ì •ì„ ìœ„í•´ 필요한 파ë¼ë¯¸í„°** CUBRID proxy ì„¤ì •ì„ ìœ„í•´ì„œëŠ” SHARD_MAX_CLIENTS, MAX_NUM_APPL_SERVER, SHARD_NUM_PROXYì˜ ì„¤ì •ì´ í•„ìš”í•˜ë‹¤. * Linuxì—서 proxy 프로세스 한 개당 사용ë˜ëŠ” íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°(fd)는 다ìŒê³¼ ê°™ì´ ì œí•œëœë‹¤. * "((SHARD_MAX_CLIENTS + MAX_NUM_APPL_SERVER) / SHARD_NUM_PROXY) + 256" <= 10,000 ìœ„ì˜ ê³µì‹ì„ ìžì„¸ížˆ 설명하면 다ìŒê³¼ 같다. * SHARD_MAX_CLIENTS는 SHARD 구성 ì‹œìŠ¤í…œì— ì ‘ì†í•˜ëŠ” ì‘ìš© í”„ë¡œê·¸ëž¨ë“¤ì˜ ìµœëŒ€ ì ‘ì† ê°œìˆ˜ë¥¼ 나타낸다. * MAX_NUM_APPL_SERVER는 proxy ì‹œìŠ¤í…œì— ì ‘ì†í•˜ëŠ” ëª¨ë“ CASë“¤ì˜ ìµœëŒ€ ì ‘ì† ê°œìˆ˜ë¥¼ 나타낸다. * SHARD_NUM_PROXY는 SHARD 구성 시스템ì—서 사용하는 proxy í”„ë¡œì„¸ìŠ¤ì˜ ê°œìˆ˜ë¥¼ 나타낸다. * "SHARD_MAX_CLIENTS / SHARD_NUM_PROXY"는 proxy 프로세스 한 개당 ì ‘ì†í•˜ëŠ” ì‘ìš© í”„ë¡œê·¸ëž¨ë“¤ì˜ ìµœëŒ€ ì ‘ì† ê°œìˆ˜ì´ë‹¤. * "MAX_NUM_APPL_SERVER / SHARD_NUM_PROXY"는 proxy 프로세스 한 개당 ì ‘ì†í•˜ëŠ” CASë“¤ì˜ ìµœëŒ€ ì ‘ì† ê°œìˆ˜ì´ë‹¤. * 256ì€ Linuxì—서 proxy 프로세스 한 개당 ë‚´ë¶€ì 으로 사용ë˜ëŠ” fdì˜ ê°œìˆ˜ì´ë‹¤. Linux 시스템ì—서 SHARD 파ë¼ë¯¸í„°ë¥¼ ì„¤ì •í•˜ëŠ” 예로, ì‘ìš© í”„ë¡œê·¸ëž¨ì˜ ìµœëŒ€ ë™ì‹œ ì ‘ì† ê°œìˆ˜(SHARD_MAX_CLIENTS)를 5,000으로 í•˜ê³ , CASì˜ ìµœëŒ€ 개수(MAX_NUM_APPL_SERVER)를 200으로 하며, proxy í”„ë¡œì„¸ìŠ¤ì˜ ìµœëŒ€ 개수(SHARD_NUM_PROXY)를 1로 하면,(5,000 + 200)/1 + 256 = 5,456 ì´ ë˜ì–´ 10,000보다 작으므로 ì´ëŸ¬í•œ ì„¤ì •ì€ ê°€ëŠ¥í•˜ë‹¤. ì´ì™€ ê´€ë ¨í•˜ì—¬ ê° í”„ë¡œì„¸ìŠ¤ ê°„ ì—°ê²° 관계를 살펴보면 다ìŒê³¼ 같다. "proxy"는 "ì‘ìš© client"와 "CAS" 사ì´ì—서 ì—°ê²°ì„ ì¤‘ìž¬í•˜ëŠ” ì—í• ì„ ìˆ˜í–‰í•œë‹¤. 아래ì—서 []는 프로세스를 나타내며, ->는 ìš”ì²í•˜ëŠ” ë°©í–¥ì„ ë‚˜íƒ€ë‚¸ë‹¤. :: [ì‘ìš© client] --(최초 ì ‘ì† ìš”ì²)---------------> [broker] (proxy ì„ íƒ) <--(ì—°ê²°í• proxy ì•Œë ¤ì¤Œ)---- ---------------------------------> [proxy] --(CAS ì„ íƒ)--> [CAS] ---> [DB server] <--------------------------------- <-------------- <--- <--(ì´í›„ ê°™ì€ proxy 사용)--------> <-------------> <--> broker는 ì‘ìš© clientê°€ 최초 ì ‘ì†ì„ ìš”ì²í• 때 proxy를 ì„ íƒí•˜ê¸° 위해 한 번만 사용ë˜ê³ , ì´í›„ CUBRID는 [ì‘ìš© client] - [proxy] - [CAS] - [DB Server]ì˜ ì—°ê²°ì„ ìœ ì§€í•œë‹¤. ë˜í•œ, CAS는 DB server와 ì—°ê²°ëœ ì´í›„ ê³„ì† ì—°ê²°ì„ ìœ ì§€í•œë‹¤. 기타 ^^^^ **MAX_STRING_LENGTH** **MAX_STRING_LENGTH** 는 BIT, VARBIT, CHAR, VARCHARì¸ ë°ì´í„° íƒ€ìž…ì— ëŒ€í•´ì„œ 최대 문ìžì—´ 길ì´ë¥¼ ì§€ì •í•˜ëŠ” 파ë¼ë¯¸í„°ì´ë‹¤. ê¸°ë³¸ê°’ì¸ **-1** 로 ì„¤ì •ë˜ë©´ ë°ì´í„°ë² ì´ìФì—서 ì •ì˜ëœ 문ìžì—´ 길ì´ê°€ 그대로 사용ë˜ê³ , 파ë¼ë¯¸í„°ì˜ ê°’ì´ **100** 으로 ì„¤ì •ë˜ë©´ ìž„ì˜ì˜ ì†ì„±ì´ VARCHAR(1000)으로 ì •ì˜ë˜ì—ˆì–´ë„ 100으로 ì •ì˜ëœ 것처럼 ë™ìž‘한다. **SERVICE** **SERVICE** 는 해당 ë¸Œë¡œì»¤ì˜ êµ¬ë™ ì—¬ë¶€ë¥¼ ê²°ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ, **ON** ë˜ëŠ” **OFF** ì˜ ê°’ìœ¼ë¡œ ì„¤ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **ON** ì´ë©°, ì´ íŒŒë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ëœ ê²½ìš°ì—ë§Œ 해당 브로커를 구ë™í• 수 있다. **SSL** **SSL** ì€ í•´ë‹¹ ë¸Œë¡œì»¤ì— íŒ¨í‚· 암호화 (**SSL**) ì ìš© 여부를 ê²°ì •í•˜ê¸° 위한 파ë¼ë¯¸í„°ë¡œ, **ON** ë˜ëŠ” **OFF** ì˜ ê°’ìœ¼ë¡œ ì„¤ì •ëœë‹¤. ê¸°ë³¸ê°’ì€ **OFF** ì´ë©°, ì´ íŒŒë¼ë¯¸í„°ê°€ **ON** 으로 ì„¤ì •ëœ ê²½ìš° 브로커/CAS는 **TLS** 를 ì´ìš©í•œ 패킷 암호화 모드로 ë™ìž‘한다. .. warning:: 브로커가 패킷 암호화 모드로 ì„¤ì •ëœ ê²½ìš° (**SSL=ON**), **jdbc** ë“±ì˜ í´ë¼ì´ì–¸íЏ ë“±ì€ ë³´ì•ˆëª¨ë“œë¡œ ì ‘ì†í•˜ì—¬ì•¼ 한다. ê·¸ë ‡ì§€ ì•Šì€ ê²½ìš° ì—°ê²° ìš”ì²ì€ ë¸Œë¡œì»¤ì— ì˜í•´ì„œ ê±°ë¶€ëœë‹¤. 반대로 ì´ íŒŒë¼ë¯¸í„°ê°€ **OFF** 로 ì„¤ì •ëœ ê²½ìš°, 보안 모드가 ì„¤ì •ëœ clientë¡œë¶€í„°ì˜ ì ‘ì† ìš”ì²ì€ ê±°ë¶€ëœë‹¤. **SOURCE_ENV** **SOURCE_ENV** 는 브로커 ê°ê°ì— 대해 개별ì 으로 ìš´ì˜ì²´ì œ 환경 변수를 ì„¤ì •í• ìˆ˜ 있는 파ì¼ì„ ì •í•˜ëŠ” 파ë¼ë¯¸í„°ë¡œ, íŒŒì¼ í™•ìž¥ìžëŠ” 반드시 **env** 여야 한다. **cubrid.conf** ì—서 ì§€ì •í•˜ëŠ” ëª¨ë“ íŒŒë¼ë¯¸í„°ëŠ” 환경 변수를 í†µí•´ì„œë„ ì„¤ì •í• ìˆ˜ 있다. 예를 들어, **cubrid.conf** ì—서 **lock_timeout** ì€ í™˜ê²½ 변수 **CUBRID_LOCK_TIMEOUT** 으로 ì§€ì •í• ìˆ˜ 있다. ë˜ ë‹¤ë¥¸ 예로, broker1ì—서만 ë°ì´í„° ì •ì˜ë¬¸ ìˆ˜í–‰ì„ ì°¨ë‹¨í•˜ë ¤ë©´ **SOURCE_ENV** ì—서 ì§€ì •í•œ 파ì¼ì— **CUBRID_BLOCK_DDL_STATEMENT** 를 1로 ì„¤ì •í•˜ë©´ ëœë‹¤. 환경변수가 있으면 **cubrid.conf** 보다 ìš°ì„ í•œë‹¤. ê¸°ë³¸ê°’ì€ **cubrid.env** ì´ë‹¤. HA ì„¤ì • ======= HA ì„¤ì •ì€ :ref:`ha-configuration`\ ì„ ì°¸ê³ í•œë‹¤. SHARD ì„¤ì • ========== SHARD ì„¤ì •ì€ :ref:`default-shard-conf`\ ì„ ì°¸ê³ í•œë‹¤.