:meta-keywords: csql, cubrid csql, cubrid commands, executing csql, csql options :meta-description: CUBRID CSQL is an application that allows users to use SQL statements through a command-driven interface. This section briefly explains how to use the CSQL Interpreter and associated commands. *************** CSQL ì¸í„°í”„리터 *************** CUBRIDì—서 SQL 질ì˜ë¬¸ì„ ìˆ˜í–‰í•˜ë ¤ë©´ 그래픽 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ(GUI) 기반 CUBRID Manager나 콘솔 기반 CSQL ì¸í„°í”„리터를 사용해야 한다. CSQLì€ CUBRIDì—서 ëª…ë ¹ì–´ ë°©ì‹ìœ¼ë¡œ SQL ë¬¸ì„ ì‚¬ìš©í• ìˆ˜ 있는 프로그램ì´ë‹¤. 여기ì—서는 CSQL ì¸í„°í”„ë¦¬í„°ì˜ ê°„ë‹¨í•œ 사용법과 ê´€ë ¨ ëª…ë ¹ì–´ë¥¼ 설명한다. .. _csql-intro: CSQL ì¸í„°í”„리터 소개 ==================== **SQL ì‚¬ìš©ì„ ìœ„í•œ ë„구** CSQL ì¸í„°í”„리터는 CUBRID와 함께 설치ë˜ë©°, 대화형(interactive) ë°©ì‹ê³¼ ì¼ê´„ 수행(batch) ë°©ì‹ìœ¼ë¡œ SQL 질ì˜ë¥¼ ìˆ˜í–‰í•˜ê³ ìˆ˜í–‰ 결과를 ì¡°íšŒí• ìˆ˜ 있는 프로그램ì´ë‹¤. CSQL ì¸í„°í”„리터는 ëª…ë ¹ì–´ ë¼ì¸ ìž…ë ¥ ë°©ì‹ì˜ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì œê³µí•˜ë©°, ìž…ë ¥ëœ SQL 문장과 ê·¸ 결과는 ë‚˜ì¤‘ì— ì‚¬ìš©í•˜ê¸° 위해서 파ì¼ì— ì €ìž¥í• ìˆ˜ë„ ìžˆë‹¤. CSQL ì¸í„°í”„리터는 CUBRID를 사용하는 가장 기본ì ì´ê³ ì†ì‰¬ìš´ 방법ì´ë‹¤. CUBRID를 ì‚¬ìš©í•˜ëŠ”ë° ì œê³µë˜ëŠ” 다양한 API(JDBC, ODBC, PHP, CCI 등)를 활용하여 ë°ì´í„°ë² ì´ìФ ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ìž‘ì„±í• ìˆ˜ 있다. ë˜í•œ, CUBRIDì—서 ì œê³µí•˜ëŠ” 관리 ë° ì§ˆì˜ ë„êµ¬ì¸ CUBRID ë§¤ë‹ˆì €ë¥¼ ì‚¬ìš©í• ìˆ˜ë„ ìžˆë‹¤. 사용ìžëŠ” CSQL ì¸í„°í”„리터가 ì œê³µí•˜ëŠ” í„°ë¯¸ë„ ê¸°ë°˜ì˜ í™˜ê²½ì—서 SQL 질ì˜ë¥¼ ìƒì„±í•˜ê³ , 수행 결과를 ì¡°íšŒí• ìˆ˜ 있다. CSQL ì¸í„°í”„리터는 CUBRID ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ì—¬ SQL ë¬¸ì„ í†µí•´ 다양한 ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. CSQL ì¸í„°í”„리터를 ì´ìš©í•´ 다ìŒê³¼ ê°™ì€ ìž‘ì—…ì„ ìˆ˜í–‰í• ìˆ˜ 있다. * SQL ë¬¸ì„ ì´ìš©í•˜ì—¬ ë°ì´í„°ë² ì´ìФ 조회, ê°±ì‹ , ì‚ì œ ë“±ì˜ ìž‘ì—… * 외부 ì…¸ ëª…ë ¹ 실행 * 조회 ê²°ê³¼ì˜ ì €ìž¥ í˜¹ì€ ì¶œë ¥ * SQL 스í¬ë¦½íЏ 파ì¼ì˜ 작성 ë° ì‹¤í–‰ * í…Œì´ë¸” 스키마 조회 * ë°ì´í„°ë² ì´ìФ 서버 시스템 파ë¼ë¯¸í„°ì˜ 조회 ë° ë³€ê²½ * 다양한 ë°ì´í„°ë² ì´ìФ ì •ë³´(스키마, 트리거, 지연 트리거, workspace, ìž ê¸ˆ, 통계) 조회 **DBA를 위한 ë„구** **DBA** (Database Administrator)는 ì¼ìƒì ì¸ ë§Žì€ ê´€ë¦¬ 업무를 수행하기 위해서 CUBRIDê°€ ì„¤ì¹˜ëœ ì‹œìŠ¤í…œì— ì ‘ì†í•´ì„œ CUBRIDê°€ ì œê³µí•˜ëŠ” 다양한 관리 ìœ í‹¸ë¦¬í‹°ë¥¼ ì´ìš©í•´ì„œ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. ë”°ë¼ì„œ, í„°ë¯¸ë„ ê¸°ë°˜ì˜ ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì œê³µí•˜ëŠ” CSQL ì¸í„°í”„리터는 **DBA** ê°€ ë°ì´í„°ë² ì´ìФ 관리 업무를 ìˆ˜í–‰í•˜ëŠ”ë° ìœ ìš©í•˜ê²Œ 사용ëœë‹¤. ë˜í•œ, CSQL ì¸í„°í”„리터는 **DBA** ì—게 필요한 다양한 ë°ì´í„°ë² ì´ìФ ì •ë³´ë¥¼ ì œê³µí•œë‹¤. CSQL ì¸í„°í”„리터는 ë…립 모드(Standalone Mode)로 실행ë ìˆ˜ë„ ìžˆë‹¤. ë…립 실행 모드는 CSQL ì¸í„°í”„리터가 서버 í”„ë¡œì„¸ìŠ¤ì˜ ê¸°ëŠ¥ì„ í¬í•¨í•˜ì—¬ ì§ì ‘ ë°ì´í„°ë² ì´ìФ 파ì¼ì— ì ‘ê·¼í•˜ì—¬ 수행하는 ë°©ì‹ì´ë‹¤. 즉 별ë„ì˜ ë°ì´í„°ë² ì´ìФ 서버 프로세스가 구ë™ë˜ì–´ 있지 ì•Šì€ ìƒíƒœì—서 해당 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œ SQL ë¬¸ì„ ì‹¤í–‰í• ìˆ˜ 있다. CSQL ì¸í„°í”„리터는 ë°ì´í„°ë² ì´ìФ 서버나 브로커 등 ì–´ë– í•œ 다른 í”„ë¡œê·¸ëž¨ì˜ ë„움 ì—†ì´ **csql** ìœ í‹¸ë¦¬í‹° 하나로 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì´ìš©í• 수 있는 ê°•ë ¥í•œ 수단ì´ë‹¤. CSQL 실행 ========= .. _csql-exec-mode: CSQL 실행 모드 -------------- **대화형 모드(Interactive Mode)** CSQL ì¸í„°í”„리터는 ë°ì´í„°ë² ì´ìФì—서 스키마 ë˜ëŠ” ë°ì´í„°ë¥¼ 다루기 위한 SQL ë¬¸ì„ ìž…ë ¥í•˜ê³ ìˆ˜í–‰í• ìˆ˜ 있다. **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 실행하면 나타나는 í”„ë¡¬í”„íŠ¸ì— ì‚¬ìš©ìžëŠ” êµ¬ë¬¸ì„ ìž…ë ¥í•œë‹¤. êµ¬ë¬¸ì„ ìž…ë ¥í•œ 후 실행하면 ë‹¤ìŒ ë¼ì¸ì— 결과가 표시ë˜ëŠ”ë°, ì´ë¥¼ 대화형 모드ë¼ê³ 한다. **ì¼ê´„ 수행 모드(Batch Mode)** 사용ìžëŠ” ì›í•˜ëŠ” SQL ë¬¸ì„ ìž„ì˜ì˜ 파ì¼ì— ì €ìž¥í•œ 후 **csql** ìœ í‹¸ë¦¬í‹°ê°€ 해당 파ì¼ì„ ì½ë„ë¡ êµ¬ë¬¸ì„ ì‹¤í–‰í• ìˆ˜ 있다. ì´ë¥¼ ì¼ê´„ 수행(배치형) 모드ë¼ê³ 한다. **ë…립 모드(Standalone Mode)** ë…립 실행 모드는 CSQL ì¸í„°í”„리터가 서버 í”„ë¡œì„¸ìŠ¤ì˜ ê¸°ëŠ¥ì„ í¬í•¨í•˜ì—¬ ì§ì ‘ ë°ì´í„°ë² ì´ìФ 파ì¼ì— ì ‘ê·¼í•˜ì—¬ 수행하는 ë°©ì‹ì´ë‹¤. 즉 별ë„ì˜ ë°ì´í„°ë² ì´ìФ 서버 프로세스가 구ë™ë˜ì–´ 있지 ì•Šì€ ìƒíƒœì—서 해당 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œ SQL ë¬¸ì„ ì‹¤í–‰í• ìˆ˜ 있다. ë…립 모드는 ë™ì‹œì— 한 사용ìžë§Œì´ ì ‘ê·¼ì´ ê°€ëŠ¥í•˜ë¯€ë¡œ **DBA** (Database Administrator)ê°€ 관리 ìž‘ì—…ì„ ìœ„í•´ ìˆ˜í–‰í•˜ëŠ”ë° ì 합한 모드ì´ë‹¤. **í´ë¼ì´ì–¸íЏ/서버 모드(Client/Server Mode)** í´ë¼ì´ì–¸íЏ/서버 모드는 ì¼ë°˜ì 으로 해당 CSQL ì¸í„°í”„리터가 í´ë¼ì´ì–¸íЏ 프로세스로 ë™ìž‘하여 ë°ì´í„°ë² ì´ìФ 서버 í”„ë¡œì„¸ìŠ¤ì— ì ‘ì†í•˜ëŠ” ë°©ì‹ìœ¼ë¡œ 사용ë˜ëŠ” 모드ì´ë‹¤. **시스템 ê´€ë¦¬ìž ëª¨ë“œ** 시스템 ê´€ë¦¬ìž ëª¨ë“œëŠ” CSQL ì¸í„°í”„리터를 통해 특별한 관리 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ê¸° 위해 사용ë˜ëŠ” 모드ì´ë‹¤. 서버 ì ‘ì† ê°œìˆ˜ê°€ 시스템 파ë¼ë¯¸í„° **max_clients**\ ì˜ ê°’ì„ ì´ˆê³¼í•˜ë”ë¼ë„ CSQL ì¸í„°í”„리터ì—서 시스템 ê´€ë¦¬ìž ëª¨ë“œë¡œ ì ‘ì†í•˜ë©´ 추가로 단 í•˜ë‚˜ì˜ ì—°ê²°ì„ í—ˆìš©í•œë‹¤. ì²´í¬ í¬ì¸íŠ¸ë¥¼ 수행하거나 트랜ìžì…˜ 모니터ë§ì„ 종료 ë“±ì˜ ìž‘ì—…ì„ ìˆ˜í–‰í• ìˆ˜ 있다. :: csql -u dba --sysadm demodb CSQL 사용 방법 -------------- **로컬 호스트 ì ‘ì†** **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 사용하여 CSQL ì¸í„°í”„리터를 실행한다. ì´ ë•Œ, í•„ìš”ì— ë”°ë¼ ì˜µì…˜ì„ ì„¤ì •í• ìˆ˜ 있으며, ì˜µì…˜ì„ ì„¤ì •í•˜ë ¤ë©´ ì ‘ì†í•˜ë ¤ëŠ” ë°ì´í„°ë² ì´ìФ ì´ë¦„ì„ ì¸ìˆ˜ë¡œ ì§€ì •í•œë‹¤. 다ìŒì€ 로컬 ì„œë²„ì— ìœ„ì¹˜í•œ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ëŠ” **csql** ìœ í‹¸ë¦¬í‹° 구문ì´ë‹¤. :: csql [options] database_name **ì›ê²© 호스트 ì ‘ì†** 다ìŒì€ ì›ê²© í˜¸ìŠ¤íŠ¸ì— ìœ„ì¹˜í•œ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ëŠ” **csql** ìœ í‹¸ë¦¬í‹° 구문ì´ë‹¤. :: csql [options] database_name@remote_host_name 단, ì›ê²© 호스트ì—서 CSQL ì¸í„°í”„리터를 ì‹¤í–‰í•˜ë ¤ë©´ ë‹¤ìŒ ì¡°ê±´ì„ ë§Œì¡±í•´ì•¼ 한다. * ì›ê²© 호스트와 로컬 í˜¸ìŠ¤íŠ¸ì— ì„¤ì¹˜ëœ CUBRID는 ë™ì¼í•œ ë²„ì „ì´ì–´ì•¼ 한다. * ì›ê²© 호스트와 로컬 í˜¸ìŠ¤íŠ¸ì˜ ë§ˆìŠ¤í„° 프로세스가 사용하는 í¬íЏ 번호가 ë™ì¼í•´ì•¼ 한다. * **-C** ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ í´ë¼ì´ì–¸íЏ/서버 모드로 ì›ê²© í˜¸ìŠ¤íŠ¸ì— ì ‘ì†í•´ì•¼ 한다. **ì˜ˆì œ** 다ìŒì€ 192.168.1.3 ìœ„ì¹˜ì˜ ì›ê²© í˜¸ìŠ¤íŠ¸ì— ì¡´ìž¬í•˜ëŠ” **demodb** ì— ì ‘ì†í•˜ì—¬ **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 호출하는 ì˜ˆì œì´ë‹¤. :: csql -C demodb@192.168.1.3 CSQL 시작 옵션 -------------- 프롬프트 ìƒì—서 옵션 목ë¡ì„ ë³´ë ¤ë©´, 다ìŒê³¼ ê°™ì´ ì˜µì…˜ì„ ì ìš©í• ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì§€ì •í•˜ì§€ ì•Šê³ **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 실행한다. :: $ csql A database-name is missing. interactive SQL utility, version 11.3 usage: csql [OPTION] database-name[@host] valid options: -S, --SA-mode standalone mode execution -C, --CS-mode client-server mode execution -u, --user=ARG alternate user name -p, --password=ARG password string, give "" for none -e, --error-continue don't exit on statement error -i, --input-file=ARG input-file-name -o, --output-file=ARG output-file-name -s, --single-line single line oriented execution -c, --command=ARG CSQL-commands -l, --line-output display each value in a line -r, --read-only read-only mode -t, --plain-output display results in a script-friendly format (only works with -c and -i) -q, --query-output display results in a query-friendly format (only work with -c and -i) -d, --loaddb-output display results in a loaddb-friendly format (only work with -c and -i) -N, --skip-column-names do not display column names in results (only works with -c and -i) --string-width display each column which is a string type in this width --no-auto-commit disable auto commit mode execution --no-pager do not use pager --no-single-line turn off single line oriented execution --no-trigger-action disable trigger action --delimiter=ARG delimiter between columns (only work with -q) --enclosure=ARG enclosure for a result string (only work with -q) For additional information, see http://www.cubrid.org **옵션** .. program:: csql .. option:: -S, --SA-mode **-S** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ë…립 모드로 ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ì—¬ **csql**\ ì„ ì‹¤í–‰í•œë‹¤. ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ë…ì ì 으로 ì‚¬ìš©í•˜ê³ ìž í• ë•Œ **-S** ì˜µì…˜ì„ ì´ìš©í•œë‹¤. **csql**\ ì´ ë…립 모드로 실행중ì´ë©´ ë˜ ë‹¤ë¥¸ **csql** ë˜ëŠ” ìœ í‹¸ë¦¬í‹°ì˜ ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥í•˜ë‹¤. **-S** 옵션과 **-C** ì˜µì…˜ì„ ë‘˜ 다 ìƒëžµí•˜ë©´ **-C** 옵션으로 ë™ìž‘한다. :: csql -S demodb .. option:: -C, --CS-mode **-C** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ í´ë¼ì´ì–¸íЏ/서버 모드로 ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ì—¬ **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 실행한다. ë°ì´í„°ë² ì´ìŠ¤ì— ì—¬ëŸ¬ í´ë¼ì´ì–¸íŠ¸ê°€ ë™ì‹œ ì ‘ì†í•˜ëŠ” 환경ì—서 **-C** ì˜µì…˜ì„ ì´ìš©í•œë‹¤. 만약 í´ë¼ì´ì–¸íЏ/서버 모드로 ì›ê²© í˜¸ìŠ¤íŠ¸ì˜ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•œ 경우ë¼ë„ **csql** ìœ í‹¸ë¦¬í‹°ë¥¼ 실행하는 ë„ì¤‘ì— ë°œìƒí•œ ì—러 로그는 로컬 í˜¸ìŠ¤íŠ¸ì˜ **csql.err** 파ì¼ì— 기ë¡ëœë‹¤. :: csql -C demodb .. option:: -i, --input-file=ARG **-i** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ 배치 모드ì—서 ì‚¬ìš©í• ìž…ë ¥ 파ì¼ì˜ ì´ë¦„ì„ ì§€ì •í•œë‹¤. **infile** 파ì¼ì—는 하나 ì´ìƒì˜ SQL ë¬¸ì´ ì €ìž¥ë˜ì–´ 있으며, **-i** ì˜µì…˜ì´ ì§€ì •ë˜ì§€ 않으면 CSQL ì¸í„°í”„리터는 대화형 모드로 실행ëœë‹¤. :: csql -i infile demodb .. option:: -o, --output-file=ARG **-o** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ì§ˆì˜ ìˆ˜í–‰ 결과를 í™”ë©´ì— ì¶œë ¥í•˜ì§€ ì•Šê³ ì§€ì •ëœ íŒŒì¼ì— ì €ìž¥í•œë‹¤. ì´ëŠ” CSQL ì¸í„°í”„ë¦¬í„°ì— ì˜í•œ ì§ˆì˜ ìˆ˜í–‰ 결과를 추후 ì¡°íšŒí•˜ê³ ìž í• ë•Œ ìœ ìš©í•˜ê²Œ 사용ë 수 있다. :: csql -o outfile demodb .. option:: -u, --user=ARG **-u** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ì§€ì •ëœ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•˜ë ¤ëŠ” ì‚¬ìš©ìž ì´ë¦„ì„ ì§€ì •í•œë‹¤. 만약 **-u** ì˜µì…˜ì´ ì§€ì •ë˜ì§€ 않으면 가장 ë‚®ì€ ì‚¬ìš©ìž ê¶Œí•œì„ ê°€ì§€ëŠ” **PUBLIC** ì´ ì‚¬ìš©ìžë¡œ ì§€ì •ëœë‹¤. ë˜í•œ ì‚¬ìš©ìž ì´ë¦„ì´ ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ìš°ì—는 오류가 ì¶œë ¥ë˜ê³ **csql** ìœ í‹¸ë¦¬í‹°ëŠ” 종료ëœë‹¤. 암호가 ì„¤ì •ëœ ì‚¬ìš©ìž ì´ë¦„ì´ ì§€ì •ëœ ê²½ìš°ì—는 암호를 ìž…ë ¥ë°›ê¸° 위한 프롬프트가 ì¶œë ¥ëœë‹¤. :: csql -u DBA demodb .. option:: -p, --password=ARG **-p** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ì§€ì •ëœ ì‚¬ìš©ìžì˜ 암호를 ìž…ë ¥í•œë‹¤. 특히, 배치 모드ì—서는 ì§€ì •í•œ 사용ìžì— 대한 암호 ìž…ë ¥ì„ ìš”ì²í•˜ëŠ” 프롬프트가 ì¶œë ¥ë˜ì§€ 않으므로 **-p** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ 암호를 ìž…ë ¥í•´ì•¼ 한다. ìž˜ëª»ëœ ì•”í˜¸ë¥¼ ìž…ë ¥í•˜ë©´, 오류가 ì¶œë ¥ë˜ê³ **csql** ìœ í‹¸ë¦¬í‹°ëŠ” 종료ëœë‹¤. :: csql -u DBA -p *** demodb .. option:: -s, --single-line **-i** 옵션과 함께 사용하는 옵션으로, **-s** ì˜µì…˜ì„ ì§€ì •í•˜ë©´ 파ì¼ì— ìž…ë ¥ëœ ì—¬ëŸ¬ ê°œì˜ SQL ë¬¸ì„ í•˜ë‚˜ì”© 나누어 수행한다. ì´ ì˜µì…˜ì€ ì§ˆì˜ ìˆ˜í–‰ì— ë©”ëª¨ë¦¬ë¥¼ ì 게 í• ë‹¹í•˜ê³ ì‹¶ì„ ë•Œ ìœ ìš©í•˜ê²Œ ì´ìš©í• 수 있다. ê° SQL ë¬¸ì€ ì„¸ë¯¸ì½œë¡ (;)으로 구분한다. ì˜µì…˜ì„ ìƒëžµí•˜ë©´ 여러 ê°œì˜ SQL ë¬¸ì„ í•œêº¼ë²ˆì— ì½ì–´ë“¤ì¸ 후 수행한다. :: csql -s -i infile demodb .. option:: -c, --command=ARG **-c** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ì…¸ ìƒì—서 하나 ì´ìƒì˜ SQL ë¬¸ì„ ì§ì ‘ 수행한다. ì´ ë•Œ, ê° ë¬¸ìž¥ì€ ì„¸ë¯¸ì½œë¡ (;)으로 구분한다. :: csql -c 'select * from olympic;select * from stadium' demodb .. option:: -l, --line-output **-l** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ SQL ë¬¸ì„ ì‹¤í–‰í•œ ê²°ê³¼ ë ˆì½”ë“œì˜ SELECT 리스트 ê°’ë“¤ì„ ë¼ì¸ 단위로 나누어서 ì¶œë ¥í•œë‹¤. **-l** ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면 ê²°ê³¼ ë ˆì½”ë“œì˜ ëª¨ë“ SELECT 리스트 ê°’ë“¤ì„ í•œ ë¼ì¸ì— ì¶œë ¥í•œë‹¤. :: csql -l demodb .. option:: -e, --error-continue SQL 문 여러 개를 ì—°ì†ìœ¼ë¡œ 나열하여 ì‹¤í–‰í• ë•Œ **-e** ì˜µì…˜ì„ ì´ìš©í•˜ë©´ SQL 문 ì¤‘ê°„ì— ì˜ë¯¸ìƒ(semantic) 오류 ë˜ëŠ” 런타임 ì—러가 ë°œìƒí•˜ì—¬ë„ ì´ë¥¼ ë¬´ì‹œí•˜ê³ ê³„ì† SQL ë¬¸ì„ ì‹¤í–‰í•œë‹¤. ì´ë•Œ SQL ë¬¸ì— ë¬¸ë²•ìƒ(syntax) 오류가 있다면 **-e** ì˜µì…˜ì´ ì§€ì •ë˜ì–´ ìžˆì–´ë„ ì˜¤ë¥˜ê°€ ë°œìƒí•œ í›„ì˜ ì§ˆì˜ë¥¼ 실행하지 않는다. :: $ csql -e demodb csql> SELECT * FROM aaa;SELECT * FROM athlete WHERE code=10000; In line 1, column 1, ERROR: before ' ;SELECT * FROM athlete WHERE code=10000; ' Unknown class "aaa". === <Result of SELECT Command in Line 1> === code name gender nation_code event ===================================================================================================== 10000 'Aardewijn Pepijn' 'M' 'NED' 'Rowing' 1 rows selected. (0.006433 sec) Committed. .. option:: -r, --read-only **-r** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ì½ê¸° ì „ìš©ìœ¼ë¡œ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•œë‹¤. ë°ì´í„°ë² ì´ìŠ¤ì— ì½ê¸° ì „ìš©ìœ¼ë¡œ ì ‘ì†í•˜ë©´ í…Œì´ë¸”ì„ ë§Œë“¤ê±°ë‚˜ ë°ì´í„°ë¥¼ ìž…ë ¥í• ìˆ˜ ì—†ê³ ë°ì´í„°ë¥¼ 조회만 í• ìˆ˜ 있다. :: csql -r demodb .. option:: -t, --plain-output 컬럼명과 ê°’ë§Œ 표시ë˜ë©° **-c** ë˜ëŠ” **-i** 옵션과 함께 ìž‘ë™ëœë‹¤. ê° ì»¬ëŸ¼ê³¼ ê°’ì´ íƒê³¼ 줄 바꿈으로 구분ë˜ë©°, ê²°ê³¼ì— í¬í•¨ëœ íƒê³¼ 백슬래시는 '\n', '\t' ë° '\\'으로 ê°ê° 대체ëœë‹¤. ì´ ì˜µì…˜ì€ **-l** 옵션과 함께 ì§€ì •ëœ ê²½ìš°ì—는 무시ëœë‹¤. :: $ csql demodb -c "select * from athlete where code between 12762 and 12765" -t code name gender nation_code event 12762 O'Brien Dan M USA Athletics 12763 O'Brien Leah W USA Softball 12764 O'Brien Shaun William M AUS Cycling 12765 O'Brien-Amico Leah W USA Softball .. option:: -q, --query-output 결과를 insert 질ì˜ì—서 ì‚¬ìš©í• ìˆ˜ 있게 ì¶œë ¥í•˜ëŠ” 옵션으로 컬럼명과 ê°’ë§Œ 표시ë˜ë©° **-c** ë˜ëŠ” **-i** 옵션과 ê°™ì´ ì‚¬ìš©í•´ì•¼ 한다. ê° ì»¬ëŸ¼ëª…ê³¼ ê°’ì€ ì½¤ë§ˆ ë˜ëŠ” **\-\-delimiter** ì˜µì…˜ì˜ ë¬¸ìžë¡œ 구분ë˜ë©°, 숫ìží˜• íƒ€ìž…ì„ ì œì™¸í•œ ëª¨ë“ ê²°ê³¼ë“¤ì€ ìž‘ì€ ë”°ì˜´í‘œ ë˜ëŠ” **\-\-enclosure** ì˜µì…˜ì˜ ë¬¸ìžë¡œ 둘러싸여 ì¶œë ¥ëœë‹¤. ì—”í´ëŸ¬ì €(enclosure)ê°€ ìž‘ì€ ë”°ì˜´í‘œì¸ ê²½ìš° ê²°ê³¼ì•ˆì˜ ìž‘ì€ ë”°ì˜´í‘œëŠ” ë‘ê°œ ìž‘ì€ ë”°ì˜´í‘œë¡œ 대체ëœë‹¤. ì´ ì˜µì…˜ì€ **-l** 옵션과 함께 ì§€ì •ëœ ê²½ìš°ì—는 무시ëœë‹¤. :: $ csql demodb -c "select * from athlete where code between 12762 and 12765" -q code,name,gender,nation_code,event 12762,'O''Brien Dan','M','USA','Athletics' 12763,'O''Brien Leah','W','USA','Softball' 12764,'O''Brien Shaun William','M','AUS','Cycling' 12765,'O''Brien-Amico Leah','W','USA','Softball' :: $ csql demodb -c "select * from athlete where code between 12762 and 12765" -q --delimiter="" --enclosure="\"" code,name,gender,nation_code,event 12762,"O'Brien Dan","M","USA","Athletics" 12763,"O'Brien Leah","W","USA","Softball" 12764,"O'Brien Shaun William","M","AUS","Cycling" 12765,"O'Brien-Amico Leah","W","USA","Softball" .. option:: -d, --loaddb-output 결과를 loaddb ìœ í‹¸ë¦¬í‹°ì—서 ì‚¬ìš©í• ìˆ˜ 있게 ì¶œë ¥í•˜ëŠ” 옵션으로 컬럼명과 ê°’ë§Œ 표시ë˜ë©° **-c** ë˜ëŠ” **-i** 옵션과 ê°™ì´ ì‚¬ìš©í•´ì•¼ 한다. ê° ì»¬ëŸ¼ëª…ê³¼ ê°’ì€ ê³µë°±ìœ¼ë¡œ 구분ë˜ë©°, 숫ìží˜• 타입를 ì œì™¸í•œ ëª¨ë“ ê²°ê³¼ë“¤ì€ ìž‘ì€ ë”°ì˜´í‘œë¡œ 둘러싸여 ì¶œë ¥ëœë‹¤. ê²°ê³¼ì•ˆì˜ ìž‘ì€ ë”°ì˜´í‘œëŠ” ë‘ê°œ ìž‘ì€ ë”°ì˜´í‘œë¡œ 대체ë˜ë©°, 열거형(ENUM)íƒ€ìž…ì˜ ê²°ê³¼ëŠ” ê°’ ëŒ€ì‹ ìƒ‰ì¸ê°’ì„ ì¶œë ¥í•œë‹¤. ì´ ì˜µì…˜ì€ **-l** 옵션과 함께 ì§€ì •ëœ ê²½ìš°ì—는 무시ëœë‹¤. :: $ csql demodb -c "select * from athlete where code between 12762 and 12765" -d %class [ ] ([code] [name] [gender] [nation_code] [event]) 12762 'O''Brien Dan' 'M' 'USA' 'Athletics' 12763 'O''Brien Leah' 'W' 'USA' 'Softball' 12764 'O''Brien Shaun William' 'M' 'AUS' 'Cycling' 12765 'O''Brien-Amico Leah' 'W' 'USA' 'Softball' .. option:: -N, --skip-column-names ê²°ê³¼ì—서 ì»¬ëŸ¼ëª…ì„ ìˆ¨ê¸´ë‹¤. **-c** ë˜ëŠ” **-i** ì˜µì…˜ì„ ì‚¬ìš©í•˜ëŠ” 경우ì—ë§Œ ìž‘ë™í•˜ë©° ì¼ë°˜ì 으로 **-t**\,**-q**\,**-d** 옵션과 함께 사용ëœë‹¤. ì´ ì˜µì…˜ì€ **-l** 옵션과 함께 ì§€ì •ëœ ê²½ìš°ì—는 무시ëœë‹¤. :: $ csql demodb -c "select * from athlete where code between 12762 and 12765" -d -N 12762 'O''Brien Dan' 'M' 'USA' 'Athletics' 12763 'O''Brien Leah' 'W' 'USA' 'Softball' 12764 'O''Brien Shaun William' 'M' 'AUS' 'Cycling' 12765 'O''Brien-Amico Leah' 'W' 'USA' 'Softball' .. option:: --no-auto-commit **\-\-no-auto-commit** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ ìžë™ 커밋 모드를 중지한다. **\-\-no-auto-commit** ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면 기본ì 으로 CSQL ì¸í„°í”„리터는 ìžë™ 커밋 모드로 ìž‘ë™ë˜ê³ , ìž…ë ¥ëœ SQL ë¬¸ì´ ì‹¤í–‰ë 때마다 ìžë™ìœ¼ë¡œ 커밋ëœë‹¤. ë˜í•œ, CSQL ì¸í„°í”„리터를 시작한 후 **;AUtocommit** 세션 ëª…ë ¹ì„ ìˆ˜í–‰í•´ë„ ë™ì¼í•œ 결과를 ì–»ì„ ìˆ˜ 있다. :: csql --no-auto-commit demodb .. option:: --no-pager **\-\-no-pager** ì˜µì…˜ì„ ì´ìš©í•˜ì—¬ CSQL ì¸í„°í”„리터ì—서 수행한 ì§ˆì˜ ê²°ê³¼ë¥¼ 페ì´ì§€ 단위로 ì¶œë ¥í•˜ì§€ ì•Šê³ , ì¼ê´„ì 으로 ì¶œë ¥í•œë‹¤. **\-\-no-pager** ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면 페ì´ì§€ 단위로 ì§ˆì˜ ìˆ˜í–‰ 결과를 ì¶œë ¥í•œë‹¤. :: csql --no-pager demodb .. option:: --no-single-line **\-\-no-single-line** ì˜µì…˜ì„ ì´ìš©í•˜ë©´ SQL 문 여러 개를 ì €ìž¥í•´ ë‘었다가 **;xr** í˜¹ì€ **;ru** 세션 ëª…ë ¹ì–´ë¡œ í•œêº¼ë²ˆì— ìˆ˜í–‰í•œë‹¤. ì´ ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면 **;xr** í˜¹ì€ **;ru** 세션 ëª…ë ¹ì–´ ì—†ì´ SQL ë¬¸ì´ ë°”ë¡œ 실행ëœë‹¤. ë˜í•œ, ;SIngleline 세션 ëª…ë ¹ì„ í†µí•´ ë™ì¼í•œ 결과를 ì–»ì„ ìˆ˜ 있다. :: csql --no-single-line demodb .. option:: --sysadm ì´ ì˜µì…˜ì€ **-u dba**\와 ê°™ì´ ì‚¬ìš©í•´ì•¼ 하며, 시스템 ê´€ë¦¬ìž ëª¨ë“œë¡œ ì‹¤í–‰í•˜ê³ ìž í• ë•Œ ì§€ì •í•œë‹¤. :: csql -u dba --sysadm demodb .. option:: --write-on-standby ì´ ì˜µì…˜ì€ ì‹œìŠ¤í…œ ê´€ë¦¬ìž ëª¨ë“œ 옵션(**\-\-sysadm**)ê³¼ 함께 사용해야 한다. ì´ ì˜µì…˜ìœ¼ë¡œ CSQLì„ ì‹¤í–‰í•œ dba는 standby ìƒíƒœì˜ DB 즉, ìŠ¬ë ˆì´ë¸Œ DB ë˜ëŠ” ë ˆí”Œë¦¬ì¹´ DBì— ì§ì ‘ ì ‘ì†í•˜ì—¬ 쓰기 ìž‘ì—…ì„ ìˆ˜í–‰í• ìˆ˜ 있다. 단, ë ˆí”Œë¦¬ì¹´ì— ì§ì ‘ 쓰는 ë°ì´í„°ëŠ” ë³µì œë˜ì§€ 않는다. :: csql --sysadm --write-on-standby -u dba testdb@localhost .. note:: ë ˆí”Œë¦¬ì¹´ì— ì§ì ‘ ë°ì´í„°ë¥¼ 쓰는 경우 ë³µì œ 불ì¼ì¹˜ê°€ ë°œìƒí•¨ì— 주ì˜í•´ì•¼ 한다. .. option:: --no-trigger-action ì´ ì˜µì…˜ì„ ì§€ì •í•˜ë©´ 해당 CSQLì—서 수행ë˜ëŠ” 질ì˜ë¬¸ì˜ 트리거는 ë™ìž‘하지 않는다. .. option:: --delimiter=ARG ì´ ì˜µì…˜ì€ **-q**\와 ê°™ì´ ì‚¬ìš©í•´ì•¼ 하며, ì¸ìžì—는 컬럼명과 ê°’ì„ êµ¬ë¶„í•˜ëŠ” ë‹¨ì¼ ë¬¸ìžë¥¼ ì§€ì •í•œë‹¤. 만약 ì—¬ëŸ¬ê°œì˜ ë¬¸ìžë¥¼ ì§€ì •í•˜ëŠ” 경우ì—는 오류를 ë°œìƒí•˜ì§€ ì•Šê³ ì²«ë²ˆì§¸ 문ìžë¥¼ 사용한다. (\\t, \\n 와 ê°™ì€ íŠ¹ìˆ˜ ë¬¸ìž ì§€ì • 가능하며 ë‹¨ì¼ ë¬¸ìžë¡œ 취급) .. option:: --enclosure=ARG ì´ ì˜µì…˜ì€ **-q**\와 ê°™ì´ ì‚¬ìš©í•´ì•¼ 하며, ì¸ìžì—는 숫ìží˜• íƒ€ìž…ì„ ì œì™¸í•œ ëª¨ë“ ê²°ê³¼ê°’ì„ ë‘˜ëŸ¬ì‹¸ëŠ” ë‹¨ì¼ ë¬¸ìžë¥¼ ì§€ì •í•œë‹¤. 만약 ì—¬ëŸ¬ê°œì˜ ë¬¸ìžë¥¼ ì§€ì •í•˜ëŠ” 경우ì—는 오류를 ë°œìƒí•˜ì§€ ì•Šê³ ì²«ë²ˆì§¸ 문ìžë¥¼ 사용한다. .. _csql-session-commands: 세션 ëª…ë ¹ì–´ =========== CSQL ì¸í„°í”„리터ì—는 SQL 문 ì´ì™¸ì— CSQL ì¸í„°í”„리터를 ì œì–´í•˜ëŠ” 특별한 ëª…ë ¹ì–´ê°€ 있으며 ì´ë¥¼ 세션 ëª…ë ¹ì–´ë¼ê³ 한다. ëª¨ë“ ì„¸ì…˜ ëª…ë ¹ì–´ëŠ” 반드시 ì„¸ë¯¸ì½œë¡ (;)으로 시작해야 한다. **;help** 를 ìž…ë ¥í•˜ì—¬ CSQL ì¸í„°í”„리터ì—서 ì§€ì›ë˜ëŠ” 세션 ëª…ë ¹ì–´ë¥¼ 확ì¸í• 수 있다. 세션 ëª…ë ¹ì–´ë¥¼ ì „ë¶€ ìž…ë ¥í•˜ì§€ ì•Šê³ ëŒ€ë¬¸ìžë¡œ í‘œì‹œëœ ê¸€ìžê¹Œì§€ë§Œ ìž…ë ¥í•´ë„ CSQL ì¸í„°í”„리터는 세션 ëª…ë ¹ì–´ë¥¼ ì¸ì‹í•œë‹¤. 세션 ëª…ë ¹ì–´ëŠ” 대소문ìžë¥¼ 구분하지 않는다. "ì§ˆì˜ ë²„í¼"는 질ì˜ë¬¸ì„ 실행하기 ì „ê¹Œì§€ 질ì˜ë¬¸ì„ ì €ìž¥í•˜ëŠ” 버í¼ì´ë‹¤. **\-\-no-single-line** ì˜µì…˜ì„ ë¶€ì—¬í•˜ì—¬ CSQLì„ ì‹¤í–‰í•˜ëŠ” 경우 **;xr** ëª…ë ¹ìœ¼ë¡œ 질ì˜ë¥¼ 실행하기 ì „ê¹Œì§€ëŠ” 질ì˜ë¬¸ì„ 버í¼ì— ìœ ì§€í•œë‹¤. **파ì¼ì—서 ì§ˆì˜ ì½ê¸°(;REAd)** **;REAd** ëª…ë ¹ì–´ëŠ” 파ì¼ì˜ ë‚´ìš©ì„ ì§ˆì˜ ë²„í¼ë¡œ ì½ëŠ” 세션 ëª…ë ¹ì–´ë¡œ, ì§€ì •ëœ ìž…ë ¥ 파ì¼ì— ì €ìž¥ëœ ì§ˆì˜ë¬¸ë“¤ì„ ì‹¤í–‰í•˜ëŠ”ë° ì‚¬ìš©í• ìˆ˜ 있다. ì§ˆì˜ ë²„í¼ì— ì˜¬ë ¤ì§„ íŒŒì¼ ë‚´ìš©ì„ ë³´ê¸° 위해서는 **;List** ëª…ë ¹ì–´ë¥¼ 사용한다. :: csql> ;read nation.sql The file has been read into the command buffer. csql> ;list insert into "sport_event" ("event_code", "event_name", "gender_type", "num_player") values (20001, 'Archery Individual', 'M', 1); insert into "sport_event" ("event_code", "event_name", "gender_type", "num_player") values 20002, 'Archery Individual', 'W', 1); .... **파ì¼ì— ì§ˆì˜ ì €ìž¥(;Write)** **;Write** 는 ì§ˆì˜ ë²„í¼ì˜ ë‚´ìš©ì„ íŒŒì¼ì— ì €ìž¥í•˜ëŠ” 세션 ëª…ë ¹ì–´ë¡œ 사용ìžê°€ CSQL ì¸í„°í”„리터ì—서 ìž…ë ¥ í˜¹ì€ ìˆ˜ì •í•œ 질ì˜ë¬¸ì„ 파ì¼ì— ì €ìž¥í• ë•Œ 사용ëœë‹¤. :: csql> ;write outfile Command buffer has been saved. **파ì¼ì— ë§ë¶™ì´ê¸°(;APpend)** 현재 ì§ˆì˜ ë²„í¼ì˜ ë‚´ìš©ì„ ì¶œë ¥ 파ì¼ì¸ **outfile**\ ì— ì¶”ê°€í•œë‹¤. :: csql> ;append outfile Command buffer has been saved. **ì…¸ ëª…ë ¹ì–´ë¥¼ 실행(;SHELL)** **;SHELL** 세션 ëª…ë ¹ì–´ë¡œ 외부 ì…¸ì„ í˜¸ì¶œí• ìˆ˜ 있다. CSQL ì¸í„°í”„리터가 ì‹¤í–‰ëœ í™˜ê²½ì—서 새로운 ì…¸ì´ ì‹œìž‘ë˜ê³ , ì…¸ì„ ë§ˆì¹˜ë©´ 다시 CSQL ì¸í„°í”„리터로 ëŒì•„온다. ë§Œì•½ì— **;SHELL_Cmd** ëª…ë ¹ì–´ë¡œ ìˆ˜í–‰í• ì…¸ ëª…ë ¹ì–´ê°€ ì§€ì •ë˜ì–´ 있다면 ì…¸ì„ êµ¬ë™í•˜ì—¬ ì§€ì •ëœ ëª…ë ¹ì–´ë¥¼ ì‹¤í–‰í•˜ê³ CSQL ì¸í„°í”„리터로 복귀하게 ëœë‹¤. :: csql> ;shell % ls -al total 2088 drwxr-xr-x 16 DBA cubrid 4096 Jul 29 16:51 . drwxr-xr-x 6 DBA cubrid 4096 Jul 29 16:17 .. drwxr-xr-x 2 DBA cubrid 4096 Jul 29 02:49 audit drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 bin drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 conf drwxr-xr-x 4 DBA cubrid 4096 Jul 29 16:14 cubridmanager % exit csql> **ì…¸ ëª…ë ¹ì–´ 등ë¡(;SHELL_Cmd)** ;SHELL_Cmd를 사용하여 ;SHELL 세션 ëª…ë ¹ì–´ë¡œ ì‹¤í–‰í• ì…¸ ëª…ë ¹ì–´ë¥¼ 등ë¡í•œë‹¤. 등ë¡ëœ ëª…ë ¹ì–´ë¥¼ 실행하기 위해서는 ì˜ˆì œì™€ ê°™ì´ ;shell ëª…ë ¹ì–´ë¥¼ ìž…ë ¥í•œë‹¤. :: csql> ;shell_c ls -la csql> ;shell total 2088 drwxr-xr-x 16 DBA cubrid 4096 Jul 29 16:51 . drwxr-xr-x 6 DBA cubrid 4096 Jul 29 16:17 .. drwxr-xr-x 2 DBA cubrid 4096 Jul 29 02:49 audit drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 bin drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 conf drwxr-xr-x 4 DBA cubrid 4096 Jul 29 16:14 cubridmanager csql> OS 환경변수(CUBRID_CSQL_SHELL ë˜ëŠ” SHELL, ë‘ í™˜ê²½ë³€ìˆ˜ê°€ ì„¤ì •ëœ ê²½ìš° CUBRID_CSQL_SHELL 사용)를 미리 등ë¡í•˜ì—¬ ì‚¬ìš©í• ìˆ˜ë„ ìžˆë‹¤. :: $ export CUBRID_CSQL_SHELL='ls -la' ë˜ëŠ” $ export SHELL='ls -la' **페ì´ì € ëª…ë ¹ì–´ 등ë¡(;PAger_cmd)** ;PAger_cmd를 사용하여 ì§ˆì˜ ì‹¤í–‰ 결과를 ì¶œë ¥í•˜ëŠ” 페ì´ì € ëª…ë ¹ì–´ë¥¼ 등ë¡í•œë‹¤. 등ë¡ë˜ëŠ” ëª…ë ¹ì–´ì— ë”°ë¼ ì¶œë ¥ë˜ëŠ” ë°©ì‹ì´ ê²°ì •ëœë‹¤. 기본 ëª…ë ¹ì–´ëŠ” **more** ì´ë©°, **cat**, **less** ë“±ì´ ì‚¬ìš©ë 수 있다. 단, ì´ ëª…ë ¹ì–´ëŠ” Linuxì—서만 ì •ìƒ ë™ìž‘한다. 페ì´ì € ëª…ë ¹ì–´ë¥¼ **more** 로 등ë¡í•˜ëŠ” 경우 ì§ˆì˜ ê²°ê³¼ë¥¼ 페ì´ì§€ 단위로 ì¶œë ¥í•˜ê³ , 스페ì´ìФ 키가 ëˆŒë ¤ì§ˆ 때까지 ë‹¤ìŒ íŽ˜ì´ì§€ì˜ ì¶œë ¥ì„ ëŒ€ê¸°í•œë‹¤. :: csql>;pager more 페ì´ì € ëª…ë ¹ì–´ë¥¼ cat으로 등ë¡í•˜ëŠ” 경우 페ì´ì§• ì—†ì´ ì§ˆì˜ ê²°ê³¼ ì „ì²´ë¥¼ ì¶œë ¥í•œë‹¤. :: csql>;pager cat output.txt로 ì¶œë ¥ì„ ë¦¬ë‹¤ì´ë ‰ì…˜í•˜ë©´ ì§ˆì˜ ê²°ê³¼ ì „ì²´ë¥¼ output.txtì— ê¸°ë¡í•œë‹¤. :: csql>;pager cat > output.txt 페ì´ì € ëª…ë ¹ì–´ë¥¼ **less** 로 등ë¡í•˜ëŠ” 경우 ì§ˆì˜ ê²°ê³¼ì— ëŒ€í•´ í¬ì›Œë”©, ë°±ì›Œë”©ì„ í• ìˆ˜ ìžˆê³ íŒ¨í„´ ê²€ìƒ‰ë„ í• ìˆ˜ 있다. :: csql>;pager less **less** ì—서 사용하는 키보드 ëª…ë ¹ì€ ë‹¤ìŒê³¼ 같다. * Page UP, b: 한 페ì´ì§€ 뒤로 가기(백워딩) * Page Down, Space: 한 페ì´ì§€ 앞으로 가기(í¬ì›Œë”©) * /문ìžì—´: ì§ˆì˜ ê²°ê³¼ì—서 문ìžì—´ 찾기 * n: ë‹¤ìŒ ë¬¸ìžì—´ 찾기 * N: ì•žì˜ ë¬¸ìžì—´ 찾기 * q: ì§ˆì˜ ê²°ê³¼ 보기 종료하기 **현재 작업 ë””ë ‰í„°ë¦¬ 변경(;CD)** CSQL ì¸í„°í”„리터를 실행한 현재 작업 ë””ë ‰í„°ë¦¬ë¥¼ ì§€ì •ëœ ë””ë ‰í„°ë¦¬ë¡œ 변경한다. 경로를 ì§€ì •í•˜ì§€ 않으면 홈 ë””ë ‰í„°ë¦¬ë¡œ 변경ëœë‹¤. :: csql> ;cd /home1/DBA/CUBRID Current directory changed to /home1/DBA/CUBRID. **CSQL ì¸í„°í”„리터 종료(;EXit)** CSQL ì¸í„°í”„리터를 종료한다. :: csql> ;ex **ì§ˆì˜ ë²„í¼ ì´ˆê¸°í™”(;CLear)** **;CLear** 세션 ëª…ë ¹ì–´ëŠ” ì§ˆì˜ ë²„í¼ì˜ ë‚´ìš©ì„ ì´ˆê¸°í™”í•œë‹¤. :: csql> ;clear csql> ;list **ì§ˆì˜ ë²„í¼ì˜ ë‚´ìš© 보여주기(;List)** 현재까지 ìž…ë ¥ ìˆ˜ì •ëœ ì§ˆì˜ ë²„í¼ì˜ ë‚´ìš©ì„ í™”ë©´ì— ì¶œë ¥í•˜ê¸° 위해서는 **;List** 세션 ëª…ë ¹ì–´ë¥¼ 사용한다. ì§ˆì˜ ë²„í¼ëŠ” 사용ìžì˜ SQL ìž…ë ¥, **;REAd** ëª…ë ¹ì–´, **;EDIT** ëª…ë ¹ì–´ 등으로 ìˆ˜ì •ë 수 있다. :: csql> ;list **SQL 문 실행(;RUn)** ì§ˆì˜ ë²„í¼ì— 있는 SQL ë¬¸ì„ ì‹¤í–‰í•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤. 다ìŒì—서 설명하는 **;Xrun** 세션 ëª…ë ¹ì–´ì™€ 달리 ì§ˆì˜ ì‹¤í–‰ 후ì—ë„ ë²„í¼ëŠ” 초기화ë˜ì§€ 않는다. :: csql> ;run **SQL 문 실행 후 ì§ˆì˜ ë²„í¼ ì´ˆê¸°í™”(;Xrun)** ì§ˆì˜ ë²„í¼ì— 있는 SQL ë¬¸ì„ ì‹¤í–‰í•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤. ì§ˆì˜ ì‹¤í–‰ 후 ì§ˆì˜ ë²„í¼ëŠ” 초기화ëœë‹¤. :: csql> ;xrun **트랜ìžì…˜ 커밋(;COmmit)** 현재 수행ë˜ê³ 있는 트랜ìžì…˜ì„ 커밋(commit)하는 세션 ëª…ë ¹ì–´ì´ë‹¤. ìžë™ 커밋(auto-commit) 모드가 아닌 경우, 명시ì 으로 커밋 ëª…ë ¹ì–´ë¥¼ ìž…ë ¥í•´ì•¼ CSQL ì¸í„°í”„리터ì—서 수행 중ì´ë˜ 트랜ìžì…˜ì´ 커밋ëœë‹¤. ìžë™ 커밋(auto-commit) ëª¨ë“œì¸ ê²½ìš°ëŠ” SQLì„ ì‹¤í–‰í• ë•Œë§ˆë‹¤ 트랜ìžì…˜ì´ ìžë™ìœ¼ë¡œ 커밋ëœë‹¤. :: csql> ;commit Execute OK. (0.000192 sec) **트랜ìžì…˜ 롤백(;ROllback)** 현재 수행ë˜ê³ 있는 트랜ìžì…˜ì„ 롤백(rollback)하는 세션 ëª…ë ¹ì–´ì´ë‹¤. **;COmmit** ê³¼ 마찬가지로 ìžë™ 커밋(auto-commit) 모드가 ì•„ë‹ ê²½ìš°(OFF)ì—ë§Œ ì˜ë¯¸ê°€ 있다. :: csql> ;rollback Execute OK. (0.000166 sec) **ìžë™ 커밋 모드 ì„¤ì •(;AUtocommit)** ìžë™ 커밋(auto-commit) 모드를 **ON** ë˜ëŠ” **OFF** 로 ì„¤ì •í•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤. 만약, **ON** ë˜ëŠ” **OFF** 를 ì§€ì •í•˜ì§€ 않으면 현재 ì„¤ì •ëœ ê°’ì„ ë³´ì—¬ì¤€ë‹¤. ì°¸ê³ ë¡œ CSQL ì¸í„°í”„리터는 ê¸°ë³¸ê°’ì´ **ON** ì´ë‹¤. :: csql> ;autocommit off AUTOCOMMIT IS OFF **ì²´í¬í¬ì¸íЏ 수행(;CHeckpoint)** CSQL 세션 ë‚´ì—서 ì²´í¬í¬ì¸íЏ ìˆ˜í–‰ì„ ì§€ì‹œí•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤. CSQL ì¸í„°í”„리터 ì ‘ì† ì‹œ ì‚¬ìš©ìž ì§€ì • 옵션(**-u** *user_name*)ì— **DBA** 그룹 멤버가 ì§€ì •ë˜ê³ 시스템 ê´€ë¦¬ìž ëª¨ë“œ(**\-\-sysadm**)로 ì ‘ì†í•œ 경우ì—ë§Œ ìˆ˜í–‰í• ìˆ˜ 있다. ì²´í¬í¬ì¸íŠ¸ëŠ” 현재 ë°ì´í„° 버í¼ì— 존재하는 페ì´ì§€ 중 임시 페ì´ì§€ë¥¼ ì œì™¸í•œ ëª¨ë“ ë”í‹° 페ì´ì§€ë¥¼ 디스í¬ë¡œ ë‚´ë ¤ì“°ê¸°(flush)하는 작업ì´ë©°, CSQL 세션 ë‚´ì—서 파ë¼ë¯¸í„° ê°’ì„ ì„¤ì •í•˜ëŠ” ëª…ë ¹ì–´(**;set** *parameter_name value*)를 í†µí•´ì„œë„ ì²´í¬í¬ì¸íЏ 주기를 ë³€ê²½í• ìˆ˜ 있다. ì²´í¬í¬ì¸íЏ 수행 주기와 ê´€ë ¨ëœ íŒŒë¼ë¯¸í„°ëŠ” **checkpoint_interval**\ ê³¼ **checkpoint_every_size** ê°€ 있다. ì´ì— 대한 ìžì„¸í•œ ë‚´ìš©ì€ :ref:`logging-parameters` 를 ì°¸ê³ í•œë‹¤. :: sysadm> ;checkpoint Checkpoint has been issued. **트랜ìžì…˜ ëª¨ë‹ˆí„°ë§ ë˜ëŠ” 종료(;Killtran)** CSQL 세션 ë‚´ì—서 트랜ìžì…˜ ìƒíƒœ ì •ë³´ë¥¼ 확ì¸í•˜ê±°ë‚˜ íŠ¹ì • 트랜ìžì…˜ì„ 종료시키는 ëª…ë ¹ì–´ì´ë‹¤. CSQL ì¸í„°í”„리터 ì ‘ì† ì‹œ ì‚¬ìš©ìž ì§€ì • 옵션(**-u** *user_name*)ì— **DBA** 그룹 멤버가 ì§€ì •ë˜ê³ 시스템 ê´€ë¦¬ìž ëª¨ë“œ(**\-\-sysadm**)로 ì ‘ì†í•œ 경우ì—ë§Œ ìˆ˜í–‰í• ìˆ˜ 있다. ì¸ìžê°€ ìƒëžµë˜ë©´ ëª¨ë“ íŠ¸ëžœìžì…˜ ìƒíƒœ ì •ë³´ë¥¼ 화면 ì¶œë ¥í•˜ê³ , ì¸ìžë¡œ íŠ¹ì • 트랜ìžì…˜ IDê°€ ì§€ì •ë˜ë©´ 해당 트랜ìžì…˜ì„ 종료시킨다. :: sysadm> ;killtran Tran index User name Host name Process id Program name ------------------------------------------------------------------------------- 1(+) dba myhost 664 cub_cas 2(+) dba myhost 6700 csql 3(+) dba myhost 2188 cub_cas 4(+) dba myhost 696 csql 5(+) public myhost 6944 csql sysadm> ;killtran 3 The specified transaction has been killed. **ë°ì´í„°ë² ì´ìФ ìž¬ì ‘ì†(;REStart)** CSQL 세션 ë‚´ì—서 ëŒ€ìƒ ë°ì´í„°ë² ì´ìŠ¤ì— ìž¬ì ‘ì†ì„ 시ë„하는 ëª…ë ¹ì–´ì´ë‹¤. CSQL ì¸í„°í”„리터를 í´ë¼ì´ì–¸íЏ/서버 모드(CS 모드)로 수행하는 경우ì—는 ì„œë²„ì™€ì˜ ì ‘ì†ì´ í•´ì œë˜ë¯€ë¡œ ìœ ì˜í•œë‹¤. ì´ ëª…ë ¹ì–´ëŠ” HA 환경ì—서 ìž¥ì• ë¡œ ì¸í•´ 다른 서버로 ì ˆì²´ê°€ ì´ë£¨ì–´ì§ì— ë”°ë¼ ë„ì¤‘ì— ì„œë²„ì™€ì˜ ì—°ê²°ì´ í•´ì œë˜ëŠ” 경우, ì„¸ì…˜ì„ ìœ ì§€í•˜ë©´ì„œ ì ˆì²´ëœ ì„œë²„ë¡œ ìž¬ì ‘ì†í• 때 ìœ ìš©í•˜ê²Œ ì‚¬ìš©í• ìˆ˜ 있다. :: csql> ;restart The database has been restarted. **현재 ë‚ ì§œ ì¶œë ¥(;DATE)** **;DATE** 는 CSQL ì¸í„°í”„리터ì—서 현재 ë‚ ì§œ ë° ì‹œê°„ ì •ë³´ë¥¼ ì¶œë ¥í•œë‹¤. :: csql> ;date Tue July 29 18:58:12 KST 2008 **ëŒ€ìƒ ë°ì´í„°ë² ì´ìФ ì •ë³´ ì¶œë ¥(;DATAbase)** CSQL ì¸í„°í”„리터ì—서 작업 ì¤‘ì¸ ë°ì´í„°ë² ì´ìФ ì´ë¦„ ë° í˜¸ìŠ¤íŠ¸ ì´ë¦„ì„ ì¶œë ¥í•œë‹¤. 만약, ëŒ€ìƒ ë°ì´í„°ë² ì´ìŠ¤ê°€ HA모드로 ë™ìž‘ 중ì´ë¼ë©´ 현재 HA모드(active, standby, ë˜ëŠ” maintenance)ë„ í•¨ê»˜ ì¶œë ¥ë 것ì´ë‹¤. :: csql> ;database demodb@cubridhost (active) **ì§€ì •í•œ í…Œì´ë¸”ì˜ ìŠ¤í‚¤ë§ˆ ì •ë³´ ì¶œë ¥(;SChema)** **;SChema** 세션 ëª…ë ¹ì–´ë¡œ ì§€ì •í•œ í…Œì´ë¸”ì˜ ìŠ¤í‚¤ë§ˆ ì •ë³´ë¥¼ 확ì¸í• 수 있다. 해당 í…Œì´ë¸”ì˜ ì´ë¦„, 칼럼 명, ì œì•½ ì‚¬í• ë“±ì˜ ì •ë³´ê°€ ì¶œë ¥ëœë‹¤. :: csql> ;schema event === <Help: Schema of a Class> === <Class Name> event <Attributes> code INTEGER NOT NULL sports CHARACTER VARYING(50) name CHARACTER VARYING(50) gender CHARACTER(1) players INTEGER <Constraints> PRIMARY KEY pk_event_event_code ON event (code) **트리거 ì¶œë ¥(;TRigger)** ì§€ì •í•œ 트리거 ëª…ì„ ê²€ìƒ‰í•˜ì—¬ ì¶œë ¥í•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤. 트리거 ëª…ì„ ì§€ì •í•˜ì§€ 않으면 ì •ì˜ëœ ëª¨ë“ íŠ¸ë¦¬ê±°ë¥¼ 보여준다. :: csql> ;trigger === <Help: All Triggers> === trig_delete_contents **파ë¼ë¯¸í„° ê°’ 확ì¸(;Get)** **;Get** 세션 ëª…ë ¹ì–´ë¥¼ ì´ìš©í•´ 현재 CSQL ì¸í„°í”„ë¦¬í„°ì— ì„¤ì •ëœ íŒŒë¼ë¯¸í„° ê°’ì„ í™•ì¸í• 수 있다. ì§€ì •ëœ íŒŒë¼ë¯¸í„° ëª…ì´ ì •í™•í•˜ì§€ 않으면 오류가 ë°œìƒí•œë‹¤. :: csql> ;get isolation_level === Get Param Input === isolation_level="tran_rep_class_commit_instance" **파ë¼ë¯¸í„° ê°’ ì„¤ì •(;SEt)** íŠ¹ì • 파ë¼ë¯¸í„°ì˜ ê°’ì„ ì„¤ì •í•˜ê¸° 위해서는 **;Set** 세션 ëª…ë ¹ì–´ë¥¼ 사용한다. ë™ì ë³€ê²½ì´ ê°€ëŠ¥í•œ 파ë¼ë¯¸í„°ë§Œ ê°’ì„ ë³€ê²½í• ìˆ˜ 있으며, 서버 파ë¼ë¯¸í„°ëŠ” DBA ê¶Œí•œì´ ìžˆì–´ì•¼ë§Œ ê°’ì„ ë³€ê²½í• ìˆ˜ 있다. ë™ì ë³€ê²½ì´ ê°€ëŠ¥í•œ 파ë¼ë¯¸í„° 목ë¡ì€ :ref:`broker-configuration` 를 ì°¸ê³ í•œë‹¤. :: csql> ;set block_ddl_statement=1 === Set Param Input === block_ddl_statement=1 -- dba ê³„ì •ìœ¼ë¡œ 실행한 csqlì—서 log_max_archives ê°’ì„ ë™ì 으로 변경 csql> ;set log_max_archives=5 **문ìžì—´ 타입과 비트 타입 ì¹¼ëŸ¼ì˜ ì¶œë ¥ ê¸¸ì´ ì§€ì •(;STring-width)** 문ìžì—´ 타입과 비트 타입 ì¹¼ëŸ¼ì˜ ì¶œë ¥ 길ì´ë¥¼ ì œí•œí•˜ê¸° 위해서 ì‚¬ìš©í• ìˆ˜ 있다. **;string-width** ë’¤ì— ê°’ì„ ì£¼ì§€ 않으면 í˜„ìž¬ì˜ ì¶œë ¥ 길ì´ë¥¼ 보여준다. ê°’ì´ 0ì´ë©´, 해당 ì¹¼ëŸ¼ì˜ ê°’ì„ ëª¨ë‘ ì¶œë ¥í•œë‹¤. ê°’ì´ 0보다 í¬ë‹¤ë©´, 해당 길ì´ë§Œí¼ ì¹¼ëŸ¼ì˜ ê°’ì„ ì¶œë ¥í•œë‹¤. :: csql> SELECT name FROM NATION WHERE NAME LIKE 'Ar%'; 'Arab Republic of Egypt' 'Aruba' 'Armenia' 'Argentina' csql> ;string-width 5 csql> SELECT name FROM NATION WHERE NAME LIKE 'Ar%'; 'Arab ' 'Aruba' 'Armen' 'Argen' csql> ;string-width STRING-WIDTH : 5 **ì§€ì •í•œ ì¹¼ëŸ¼ì˜ ì¶œë ¥ ê¸¸ì´ ì§€ì •(;COLumn-width)** 타입과 ìƒê´€ì—†ì´ íŠ¹ì • ì¹¼ëŸ¼ì˜ ì¶œë ¥ 길ì´ë¥¼ ì œí•œí•˜ê¸° 위해서 ì‚¬ìš©í• ìˆ˜ 있다. ;COL ë’¤ì— ê°’ì„ ì£¼ì§€ 않으면 현재 ì„¤ì •ëœ ì¹¼ëŸ¼ì˜ ì¶œë ¥ 길ì´ë¥¼ 보여준다. ë’¤ì— ê°’ì´ 0ì´ë©´ 해당 ì¹¼ëŸ¼ì˜ ê°’ì„ ëª¨ë‘ ì¶œë ¥í•˜ë©°, ê°’ì´ 0보다 í¬ë‹¤ë©´ 해당 길ì´ë§Œí¼ ì¹¼ëŸ¼ì˜ ê°’ì„ ì¶œë ¥í•œë‹¤. :: csql> CREATE TABLE tbl(a BIGINT, b BIGINT); csql> INSERT INTO tbl VALUES(12345678890, 1234567890) csql> ;column-width a=5 csql> SELECT * FROM tbl; 12345 1234567890 csql> ;column-width COLUMN-WIDTH a : 5 **ì§ˆì˜ ì‹¤í–‰ ê³„íš ë³´ê¸° 수준 ì„¤ì •(;PLan)** **;PLan** 세션 ëª…ë ¹ì–´ëŠ” ì§ˆì˜ ì‹¤í–‰ ê³„íš ë³´ê¸°ì˜ ìˆ˜ì¤€ì„ ì„¤ì •í•œë‹¤. ìˆ˜ì¤€ì€ **simple**, **detail**, **off** 로 ì§€ì •í•œë‹¤. ê° ì„¤ì •ê°’ì˜ ì˜ë¯¸ëŠ” 다ìŒê³¼ 같다. * **off**: ì§ˆì˜ ì‹¤í–‰ 계íšì„ ì¶œë ¥í•˜ì§€ ì•ŠìŒ * **simple**: ì§ˆì˜ ì‹¤í–‰ 계íšì„ 단순하게 ì¶œë ¥í•¨. (OPT LEVEL=257) * **detail**: ì§ˆì˜ ì‹¤í–‰ 계íšì„ ìžì„¸í•˜ê²Œ ì¶œë ¥í•¨. (OPT LEVEL=513) .. _set-autotrace: **SQL íŠ¸ë ˆì´ìФ ì„¤ì •(;trace)** ì§ˆì˜ ê²°ê³¼ë¥¼ ì¶œë ¥í• ë•Œ SQL íŠ¸ë ˆì´ìФ 결과를 í•ìƒ í•¨ê»˜ ì¶œë ¥í• ê²ƒì¸ì§€ 여부를 ì„¤ì •í•œë‹¤. ì´ ëª…ë ¹ì„ ì‚¬ìš©í•˜ì—¬ SQL íŠ¸ë ˆì´ìŠ¤ë¥¼ ON으로 ì„¤ì •í•˜ë©´, "**SHOW TRACE**" êµ¬ë¬¸ì„ ì‹¤í–‰í•˜ì§€ ì•Šì•„ë„ ì§ˆì˜ ê²°ê³¼ë¥¼ ì¶œë ¥í•œ 다ìŒì— ì§ˆì˜ í”„ë¡œíŒŒì¼ë§(profiling) 결과를 ìžë™ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. 보다 ìžì„¸í•œ ì„¤ëª…ì€ :ref:`query-profiling`\ 를 ì°¸ê³ í•œë‹¤. ëª…ë ¹ 형ì‹ì€ 다ìŒê³¼ 같다. :: ;trace {on | off} [{text | json}] * **on**: SQL íŠ¸ë ˆì´ìŠ¤ë¥¼ on한다. * **off**: SQL íŠ¸ë ˆì´ìŠ¤ë¥¼ off한다. * **text**: ì¼ë°˜ TEXT 형ì‹ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. OUTPUT ì´í•˜ ì ˆì„ ìƒëžµí•˜ë©´ ì¼ë°˜ TEXT 형ì‹ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. * **json**: JSON 형ì‹ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. .. note:: ë…립 모드(-S 옵션 사용)로 실행한 CSQL ì¸í„°í”„리터는 SQL íŠ¸ë ˆì´ìФ ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않는다. **ì •ë³´ ì¶œë ¥(;Info)** **;Info** 세션 ëª…ë ¹ì–´ëŠ” 스키마, 트리거, 작업 환경, ìž ê¸ˆ, 통계 ë“±ì˜ ì •ë³´ë¥¼ 확ì¸í• 수 있는 ëª…ë ¹ì–´ì´ë‹¤. :: csql> ;info lock *** Lock Table Dump *** Lock Escalation at = 100000, Run Deadlock interval = 1 Transaction (index 0, unknown, unknown@unknown|-1) Isolation COMMITTED READ State TRAN_ACTIVE Timeout_period -1 ...... .. _csql-execution-statistics: **CSQL 실행 통계 ì •ë³´ ì¶œë ¥(;.Hist)** **;.Hist** 세션 ëª…ë ¹ì–´ëŠ” CSQLì—서 ì§ˆì˜ ì‹¤í–‰ 통계 ì •ë³´ì˜ ìˆ˜ì§‘ì„ ì‹œìž‘í•˜ê¸° 위한 CSQL 세션 ëª…ë ¹ì–´ë¡œì„œ, ì´ ì •ë³´ëŠ” "**;.Hist on**"ì´ ìž…ë ¥ëœ ì´í›„부터 현재 ì—°ê²°ëœ CSQLì— ëŒ€í•´ì„œë§Œ 수집ëœë‹¤. 다ìŒì€ ì´ ì„¸ì…˜ ëª…ë ¹ì–´ì˜ **;.Hist** 세션 ëª…ë ¹ì–´ì˜ ì˜µì…˜ìœ¼ë¡œ **on**, **off**\ 를 ì œê³µí•˜ë©°, ê° ì˜µì…˜ì˜ ì˜ë¯¸ëŠ” 다ìŒê³¼ 같다. * **on**: 해당 ì—°ê²°ì— ëŒ€í•œ 서버 실행 통계 ì •ë³´ ìˆ˜ì§‘ì„ ì‹œìž‘. * **off**: 서버 실행 통계 ì •ë³´ ìˆ˜ì§‘ì„ ì¢…ë£Œ. 단, **cubrid.conf** 파ì¼ì—서 ê´€ë ¨ 파ë¼ë¯¸í„°(**communication_histogram**)를 **yes**\ 로 ì„¤ì •í•˜ê±°ë‚˜, csqlì—서 ";se communication_histogram=yes"를 실행해야만 ì´ ëª…ë ¹ì–´ë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. "**;.Hist on**" ì´í›„ 서버 실행 통계 ì •ë³´ë¥¼ í™”ë©´ì— ì¶œë ¥í•˜ê¸° 위해서는 **;.dump_hist** ë˜ëŠ” **;.x**\ 와 ê°™ì€ ì‹¤í–‰ ëª…ë ¹ì–´ë¥¼ ìž…ë ¥í•´ì•¼ 한다. **;.dump_hist** ë˜ëŠ” **;.x**\ 를 ìˆ˜í–‰í• ë•Œë§ˆë‹¤, ì¶•ì ëœ ê°’ì´ ì¶œë ¥ëœ í›„ ëª¨ë“ ê°’ì´ ì´ˆê¸°í™”ëœë‹¤. ì°¸ê³ ë¡œ, DB ì„œë²„ì˜ ëª¨ë“ ì§ˆì˜ ì‹¤í–‰ 통계 ì •ë³´ë¥¼ 확ì¸í•˜ê¸° 위해서는 **cubrid statdump** ìœ í‹¸ë¦¬í‹°ë¥¼ 사용해야 한다. ë‹¤ìŒ ì˜ˆì œëŠ” 현재 ì—°ê²°ì— ëŒ€í•œ 서버 실행 통계 ì •ë³´ë¥¼ 확ì¸í•˜ëŠ” ì˜ˆì œì´ë‹¤. ì¶œë ¥ë˜ëŠ” 통계 ì •ë³´ í•목 ë˜ëŠ” **cubrid statdump**\ ì— ëŒ€í•œ ì„¤ëª…ì€ :ref:`statdump`\ ì„ ì°¸ê³ í•œë‹¤. :: csql> ;set communication_histogram=yes csql> ;.hist on csql> SELECT name FROM nation LIMIT 5; csql> ;.x Histogram of client requests: Name Rcount Sent size Recv size , Server time LC_FETCHALL 2 X 72+ 0 b, 0.000000 s LC_DOESEXIST 3 X 84+ 36 b, 0.000142 s LC_FETCH_LOCKHINT_CLASSES 1 X 56+ 0 b, 0.000000 s BTREE_GET_KEY_TYPE 5 X 180+ 60 b, 0.000111 s QM_QUERY_DROP_ALL_PLANS 1 X 224+ 40 b, 0.000080 s QM_QUERY_DUMP_PLANS 1 X 72+ 308 b, 0.000355 s --------------------------------------------------------------------------- Totals: 13 X 688+ 444 b 0.001415 s Average server response time = 0.000109 secs Average time between client requests = 0.000000 secs *** CLIENT EXECUTION STATISTICS *** System CPU (sec) = 0 User CPU (sec) = 0 Elapsed (sec) = 20 *** SERVER EXECUTION STATISTICS *** Num_file_creates = 0 Num_file_removes = 0 Num_file_ioreads = 0 Num_file_iowrites = 0 Num_file_iosynches = 0 The timer values for file_iosync_all are: Num_file_iosync_all = 0 Total_time_file_iosync_all = 0 Max_time_file_iosync_all = 0 Avg_time_file_iosync_all = 0 Num_file_page_allocs = 0 Num_file_page_deallocs = 0 Num_data_page_fetches = 58 Num_data_page_dirties = 0 Num_data_page_ioreads = 0 Num_data_page_iowrites = 0 Num_data_page_flushed = 0 Num_data_page_private_quota = 551 Num_data_page_private_count = 8 Num_data_page_fixed = 1 Num_data_page_dirty = 0 Num_data_page_lru1 = 22 Num_data_page_lru2 = 14 Num_data_page_lru3 = 8 Num_data_page_victim_candidate = 8 Num_log_page_fetches = 0 Num_log_page_ioreads = 0 Num_log_page_iowrites = 0 Num_log_append_records = 0 Num_log_archives = 0 Num_log_start_checkpoints = 0 Num_log_end_checkpoints = 0 Num_log_wals = 0 Num_log_page_iowrites_for_replacement = 0 Num_log_page_replacements = 0 Num_page_locks_acquired = 0 Num_object_locks_acquired = 4 Num_page_locks_converted = 0 Num_object_locks_converted = 2 Num_page_locks_re-requested = 0 Num_object_locks_re-requested = 11 Num_page_locks_waits = 0 Num_object_locks_waits = 0 Num_object_locks_time_waited_usec = 0 Num_tran_commits = 1 Num_tran_rollbacks = 0 Num_tran_savepoints = 0 Num_tran_start_topops = 0 Num_tran_end_topops = 0 Num_tran_interrupts = 0 Num_tran_postpone_cache_hits = 0 Num_tran_postpone_cache_miss = 0 Num_tran_topop_postpone_cache_hits = 0 Num_tran_topop_postpone_cache_miss = 0 Num_btree_inserts = 0 Num_btree_deletes = 0 Num_btree_updates = 0 Num_btree_covered = 0 Num_btree_noncovered = 0 Num_btree_resumes = 0 Num_btree_multirange_optimization = 0 Num_btree_splits = 0 Num_btree_merges = 0 Num_btree_get_stats = 0 The timer values for btree_online_load are: Num_btree_online_load = 0 Total_time_btree_online_load = 0 Max_time_btree_online_load = 0 Avg_time_btree_online_load = 0 The timer values for btree_online_insert_task are: Num_btree_online_insert_task = 0 Total_time_btree_online_insert_task = 0 Max_time_btree_online_insert_task = 0 Avg_time_btree_online_insert_task = 0 The timer values for btree_online_prepare_task are: Num_btree_online_prepare_task = 0 Total_time_btree_online_prepare_task = 0 Max_time_btree_online_prepare_task = 0 Avg_time_btree_online_prepare_task = 0 The timer values for btree_online_insert_leaf are: Num_btree_online_insert_leaf = 0 Total_time_btree_online_insert_leaf = 0 Max_time_btree_online_insert_leaf = 0 Avg_time_btree_online_insert_leaf = 0 Num_btree_online_inserts = 0 Num_btree_online_inserts_same_page_hold = 0 Num_btree_online_inserts_retry = 0 Num_btree_online_inserts_retry_nice = 0 Num_query_selects = 1 Num_query_inserts = 0 Num_query_deletes = 0 Num_query_updates = 0 Num_query_sscans = 1 Num_query_iscans = 0 Num_query_lscans = 0 Num_query_setscans = 0 Num_query_methscans = 0 Num_query_nljoins = 0 Num_query_mjoins = 0 Num_query_objfetches = 0 Num_query_holdable_cursors = 0 Num_sort_io_pages = 0 Num_sort_data_pages = 0 Num_network_requests = 14 Num_adaptive_flush_pages = 0 Num_adaptive_flush_log_pages = 0 Num_adaptive_flush_max_pages = 0 Num_prior_lsa_list_size = 0 Num_prior_lsa_list_maxed = 0 Num_prior_lsa_list_removed = 0 Time_ha_replication_delay = 0 Num_plan_cache_add = 0 Num_plan_cache_lookup = 2 Num_plan_cache_hit = 2 Num_plan_cache_miss = 0 Num_plan_cache_full = 0 Num_plan_cache_delete = 0 Num_plan_cache_invalid_xasl_id = 0 Num_plan_cache_entries = 1 Num_vacuum_log_pages_vacuumed = 0 Num_vacuum_log_pages_to_vacuum = 0 Num_vacuum_prefetch_requests_log_pages = 0 Num_vacuum_prefetch_hits_log_pages = 0 Num_heap_home_inserts = 0 Num_heap_big_inserts = 0 Num_heap_assign_inserts = 0 Num_heap_home_deletes = 0 Num_heap_home_mvcc_deletes = 0 Num_heap_home_to_rel_deletes = 0 Num_heap_home_to_big_deletes = 0 Num_heap_rel_deletes = 0 Num_heap_rel_mvcc_deletes = 0 Num_heap_rel_to_home_deletes = 0 Num_heap_rel_to_big_deletes = 0 Num_heap_rel_to_rel_deletes = 0 Num_heap_big_deletes = 0 Num_heap_big_mvcc_deletes = 0 Num_heap_home_updates = 0 Num_heap_home_to_rel_updates = 0 Num_heap_home_to_big_updates = 0 Num_heap_rel_updates = 0 Num_heap_rel_to_home_updates = 0 Num_heap_rel_to_rel_updates = 0 Num_heap_rel_to_big_updates = 0 Num_heap_big_updates = 0 Num_heap_home_vacuums = 0 Num_heap_big_vacuums = 0 Num_heap_rel_vacuums = 0 Num_heap_insid_vacuums = 0 Num_heap_remove_vacuums = 0 The timer values for heap_insert_prepare are: Num_heap_insert_prepare = 0 Total_time_heap_insert_prepare = 0 Max_time_heap_insert_prepare = 0 Avg_time_heap_insert_prepare = 0 The timer values for heap_insert_execute are: Num_heap_insert_execute = 0 Total_time_heap_insert_execute = 0 Max_time_heap_insert_execute = 0 Avg_time_heap_insert_execute = 0 The timer values for heap_insert_log are: Num_heap_insert_log = 0 Total_time_heap_insert_log = 0 Max_time_heap_insert_log = 0 Avg_time_heap_insert_log = 0 The timer values for heap_delete_prepare are: Num_heap_delete_prepare = 0 Total_time_heap_delete_prepare = 0 Max_time_heap_delete_prepare = 0 Avg_time_heap_delete_prepare = 0 The timer values for heap_delete_execute are: Num_heap_delete_execute = 0 Total_time_heap_delete_execute = 0 Max_time_heap_delete_execute = 0 Avg_time_heap_delete_execute = 0 The timer values for heap_delete_log are: Num_heap_delete_log = 0 Total_time_heap_delete_log = 0 Max_time_heap_delete_log = 0 Avg_time_heap_delete_log = 0 The timer values for heap_update_prepare are: Num_heap_update_prepare = 0 Total_time_heap_update_prepare = 0 Max_time_heap_update_prepare = 0 Avg_time_heap_update_prepare = 0 The timer values for heap_update_execute are: Num_heap_update_execute = 0 Total_time_heap_update_execute = 0 Max_time_heap_update_execute = 0 Avg_time_heap_update_execute = 0 The timer values for heap_update_log are: Num_heap_update_log = 0 Total_time_heap_update_log = 0 Max_time_heap_update_log = 0 Avg_time_heap_update_log = 0 The timer values for heap_vacuum_prepare are: Num_heap_vacuum_prepare = 0 Total_time_heap_vacuum_prepare = 0 Max_time_heap_vacuum_prepare = 0 Avg_time_heap_vacuum_prepare = 0 The timer values for heap_vacuum_execute are: Num_heap_vacuum_execute = 0 Total_time_heap_vacuum_execute = 0 Max_time_heap_vacuum_execute = 0 Avg_time_heap_vacuum_execute = 0 The timer values for heap_vacuum_log are: Num_heap_vacuum_log = 0 Total_time_heap_vacuum_log = 0 Max_time_heap_vacuum_log = 0 Avg_time_heap_vacuum_log = 0 The timer values for heap_stats_sync_bestspace are: Num_heap_stats_sync_bestspace = 0 Total_time_heap_stats_sync_bestspace = 0 Max_time_heap_stats_sync_bestspace = 0 Avg_time_heap_stats_sync_bestspace = 0 Num_heap_stats_bestspace_entries = 0 Num_heap_stats_bestspace_maxed = 0 The timer values for bestspace_add are: Num_bestspace_add = 0 Total_time_bestspace_add = 0 Max_time_bestspace_add = 0 Avg_time_bestspace_add = 0 The timer values for bestspace_del are: Num_bestspace_del = 0 Total_time_bestspace_del = 0 Max_time_bestspace_del = 0 Avg_time_bestspace_del = 0 The timer values for bestspace_find are: Num_bestspace_find = 0 Total_time_bestspace_find = 0 Max_time_bestspace_find = 0 Avg_time_bestspace_find = 0 The timer values for heap_find_page_bestspace are: Num_heap_find_page_bestspace = 0 Total_time_heap_find_page_bestspace = 0 Max_time_heap_find_page_bestspace = 0 Avg_time_heap_find_page_bestspace = 0 The timer values for heap_find_best_page are: Num_heap_find_best_page = 0 Total_time_heap_find_best_page = 0 Max_time_heap_find_best_page = 0 Avg_time_heap_find_best_page = 0 The timer values for bt_fix_ovf_oids are: Num_bt_fix_ovf_oids = 0 Total_time_bt_fix_ovf_oids = 0 Max_time_bt_fix_ovf_oids = 0 Avg_time_bt_fix_ovf_oids = 0 The timer values for bt_unique_rlocks are: Num_bt_unique_rlocks = 0 Total_time_bt_unique_rlocks = 0 Max_time_bt_unique_rlocks = 0 Avg_time_bt_unique_rlocks = 0 The timer values for bt_unique_wlocks are: Num_bt_unique_wlocks = 0 Total_time_bt_unique_wlocks = 0 Max_time_bt_unique_wlocks = 0 Avg_time_bt_unique_wlocks = 0 The timer values for bt_leaf are: Num_bt_leaf = 0 Total_time_bt_leaf = 0 Max_time_bt_leaf = 0 Avg_time_bt_leaf = 0 The timer values for bt_traverse are: Num_bt_traverse = 5 Total_time_bt_traverse = 162 Max_time_bt_traverse = 51 Avg_time_bt_traverse = 32 The timer values for bt_find_unique are: Num_bt_find_unique = 0 Total_time_bt_find_unique = 0 Max_time_bt_find_unique = 0 Avg_time_bt_find_unique = 0 The timer values for bt_find_unique_traverse are: Num_bt_find_unique_traverse = 5 Total_time_bt_find_unique_traverse = 165 Max_time_bt_find_unique_traverse = 53 Avg_time_bt_find_unique_traverse = 33 The timer values for bt_range_search are: Num_bt_range_search = 0 Total_time_bt_range_search = 0 Max_time_bt_range_search = 0 Avg_time_bt_range_search = 0 The timer values for bt_range_search_traverse are: Num_bt_range_search_traverse = 0 Total_time_bt_range_search_traverse = 0 Max_time_bt_range_search_traverse = 0 Avg_time_bt_range_search_traverse = 0 The timer values for bt_insert are: Num_bt_insert = 0 Total_time_bt_insert = 0 Max_time_bt_insert = 0 Avg_time_bt_insert = 0 The timer values for bt_insert_traverse are: Num_bt_insert_traverse = 0 Total_time_bt_insert_traverse = 0 Max_time_bt_insert_traverse = 0 Avg_time_bt_insert_traverse = 0 The timer values for bt_delete_obj are: Num_bt_delete_obj = 0 Total_time_bt_delete_obj = 0 Max_time_bt_delete_obj = 0 Avg_time_bt_delete_obj = 0 The timer values for bt_delete_obj_traverse are: Num_bt_delete_obj_traverse = 0 Total_time_bt_delete_obj_traverse = 0 Max_time_bt_delete_obj_traverse = 0 Avg_time_bt_delete_obj_traverse = 0 The timer values for bt_mvcc_delete are: Num_bt_mvcc_delete = 0 Total_time_bt_mvcc_delete = 0 Max_time_bt_mvcc_delete = 0 Avg_time_bt_mvcc_delete = 0 The timer values for bt_mvcc_delete_traverse are: Num_bt_mvcc_delete_traverse = 0 Total_time_bt_mvcc_delete_traverse = 0 Max_time_bt_mvcc_delete_traverse = 0 Avg_time_bt_mvcc_delete_traverse = 0 The timer values for bt_mark_delete are: Num_bt_mark_delete = 0 Total_time_bt_mark_delete = 0 Max_time_bt_mark_delete = 0 Avg_time_bt_mark_delete = 0 The timer values for bt_mark_delete_traverse are: Num_bt_mark_delete_traverse = 0 Total_time_bt_mark_delete_traverse = 0 Max_time_bt_mark_delete_traverse = 0 Avg_time_bt_mark_delete_traverse = 0 The timer values for bt_undo_insert are: Num_bt_undo_insert = 0 Total_time_bt_undo_insert = 0 Max_time_bt_undo_insert = 0 Avg_time_bt_undo_insert = 0 The timer values for bt_undo_insert_traverse are: Num_bt_undo_insert_traverse = 0 Total_time_bt_undo_insert_traverse = 0 Max_time_bt_undo_insert_traverse = 0 Avg_time_bt_undo_insert_traverse = 0 The timer values for bt_undo_delete are: Num_bt_undo_delete = 0 Total_time_bt_undo_delete = 0 Max_time_bt_undo_delete = 0 Avg_time_bt_undo_delete = 0 The timer values for bt_undo_delete_traverse are: Num_bt_undo_delete_traverse = 0 Total_time_bt_undo_delete_traverse = 0 Max_time_bt_undo_delete_traverse = 0 Avg_time_bt_undo_delete_traverse = 0 The timer values for bt_undo_mvcc_delete are: Num_bt_undo_mvcc_delete = 0 Total_time_bt_undo_mvcc_delete = 0 Max_time_bt_undo_mvcc_delete = 0 Avg_time_bt_undo_mvcc_delete = 0 The timer values for bt_undo_mvcc_delete_traverse are: Num_bt_undo_mvcc_delete_traverse = 0 Total_time_bt_undo_mvcc_delete_traverse = 0 Max_time_bt_undo_mvcc_delete_traverse = 0 Avg_time_bt_undo_mvcc_delete_traverse = 0 The timer values for bt_vacuum are: Num_bt_vacuum = 0 Total_time_bt_vacuum = 0 Max_time_bt_vacuum = 0 Avg_time_bt_vacuum = 0 The timer values for bt_vacuum_traverse are: Num_bt_vacuum_traverse = 0 Total_time_bt_vacuum_traverse = 0 Max_time_bt_vacuum_traverse = 0 Avg_time_bt_vacuum_traverse = 0 The timer values for bt_vacuum_insid are: Num_bt_vacuum_insid = 0 Total_time_bt_vacuum_insid = 0 Max_time_bt_vacuum_insid = 0 Avg_time_bt_vacuum_insid = 0 The timer values for bt_vacuum_insid_traverse are: Num_bt_vacuum_insid_traverse = 0 Total_time_bt_vacuum_insid_traverse = 0 Max_time_bt_vacuum_insid_traverse = 0 Avg_time_bt_vacuum_insid_traverse = 0 The timer values for vacuum_master are: Num_vacuum_master = 0 Total_time_vacuum_master = 0 Max_time_vacuum_master = 0 Avg_time_vacuum_master = 0 The timer values for vacuum_job are: Num_vacuum_job = 0 Total_time_vacuum_job = 0 Max_time_vacuum_job = 0 Avg_time_vacuum_job = 0 The timer values for vacuum_worker_process_log are: Num_vacuum_worker_process_log = 0 Total_time_vacuum_worker_process_log = 0 Max_time_vacuum_worker_process_log = 0 Avg_time_vacuum_worker_process_log = 0 The timer values for vacuum_worker_execute are: Num_vacuum_worker_execute = 0 Total_time_vacuum_worker_execute = 0 Max_time_vacuum_worker_execute = 0 Avg_time_vacuum_worker_execute = 0 Time_get_snapshot_acquire_time = 7 Count_get_snapshot_retry = 0 Time_tran_complete_time = 7 The timer values for compute_oldest_visible are: Num_compute_oldest_visible = 0 Total_time_compute_oldest_visible = 0 Max_time_compute_oldest_visible = 0 Avg_time_compute_oldest_visible = 0 Count_get_oldest_mvcc_retry = 0 Data_page_buffer_hit_ratio = 100.00 Log_page_buffer_hit_ratio = 0.00 Vacuum_data_page_buffer_hit_ratio = 0.00 Vacuum_page_efficiency_ratio = 0.00 Vacuum_page_fetch_ratio = 0.00 Data_page_fix_lock_acquire_time_msec = 0.00 Data_page_fix_hold_acquire_time_msec = 0.00 Data_page_fix_acquire_time_msec = 0.25 Data_page_allocate_time_ratio = 100.00 Data_page_total_promote_success = 0.00 Data_page_total_promote_fail = 0.00 Data_page_total_promote_time_msec = 0.00 Num_unfix_void_to_private_top = 0 Num_unfix_void_to_private_mid = 0 Num_unfix_void_to_shared_mid = 0 Num_unfix_lru1_private_to_shared_mid = 0 Num_unfix_lru2_private_to_shared_mid = 0 Num_unfix_lru3_private_to_shared_mid = 0 Num_unfix_lru2_private_keep = 0 Num_unfix_lru2_shared_keep = 0 Num_unfix_lru2_private_to_top = 0 Num_unfix_lru2_shared_to_top = 0 Num_unfix_lru3_private_to_top = 4 Num_unfix_lru3_shared_to_top = 0 Num_unfix_lru1_private_keep = 3 Num_unfix_lru1_shared_keep = 36 Num_unfix_void_to_private_mid_vacuum = 0 Num_unfix_lru1_any_keep_vacuum = 0 Num_unfix_lru2_any_keep_vacuum = 0 Num_unfix_lru3_any_keep_vacuum = 0 Num_unfix_void_aout_found = 0 Num_unfix_void_aout_not_found = 0 Num_unfix_void_aout_found_vacuum = 0 Num_unfix_void_aout_not_found_vacuum = 0 Num_data_page_hash_anchor_waits = 0 Time_data_page_hash_anchor_wait = 0 The timer values for flush_collect are: Num_flush_collect = 0 Total_time_flush_collect = 0 Max_time_flush_collect = 0 Avg_time_flush_collect = 0 The timer values for flush_flush are: Num_flush_flush = 0 Total_time_flush_flush = 0 Max_time_flush_flush = 0 Avg_time_flush_flush = 0 The timer values for flush_sleep are: Num_flush_sleep = 0 Total_time_flush_sleep = 0 Max_time_flush_sleep = 0 Avg_time_flush_sleep = 0 The timer values for flush_collect_per_page are: Num_flush_collect_per_page = 0 Total_time_flush_collect_per_page = 0 Max_time_flush_collect_per_page = 0 Avg_time_flush_collect_per_page = 0 The timer values for flush_flush_per_page are: Num_flush_flush_per_page = 0 Total_time_flush_flush_per_page = 0 Max_time_flush_flush_per_page = 0 Avg_time_flush_flush_per_page = 0 Num_data_page_writes = 0 Num_data_page_dirty_to_post_flush = 0 Num_data_page_skipped_flush = 0 Num_data_page_skipped_flush_need_wal = 0 Num_data_page_skipped_flush_already_flushed = 0 Num_data_page_skipped_flush_fixed_or_hot = 0 The timer values for compensate_flush are: Num_compensate_flush = 0 Total_time_compensate_flush = 0 Max_time_compensate_flush = 0 Avg_time_compensate_flush = 0 The timer values for assign_direct_bcb are: Num_assign_direct_bcb = 0 Total_time_assign_direct_bcb = 0 Max_time_assign_direct_bcb = 0 Avg_time_assign_direct_bcb = 0 The timer values for wake_flush_waiter are: Num_wake_flush_waiter = 0 Total_time_wake_flush_waiter = 0 Max_time_wake_flush_waiter = 0 Avg_time_wake_flush_waiter = 0 The timer values for alloc_bcb are: Num_alloc_bcb = 0 Total_time_alloc_bcb = 0 Max_time_alloc_bcb = 0 Avg_time_alloc_bcb = 0 The timer values for alloc_bcb_search_victim are: Num_alloc_bcb_search_victim = 0 Total_time_alloc_bcb_search_victim = 0 Max_time_alloc_bcb_search_victim = 0 Avg_time_alloc_bcb_search_victim = 0 The timer values for alloc_bcb_cond_wait_high_prio are: Num_alloc_bcb_cond_wait_high_prio = 0 Total_time_alloc_bcb_cond_wait_high_prio = 0 Max_time_alloc_bcb_cond_wait_high_prio = 0 Avg_time_alloc_bcb_cond_wait_high_prio = 0 The timer values for alloc_bcb_cond_wait_low_prio are: Num_alloc_bcb_cond_wait_low_prio = 0 Total_time_alloc_bcb_cond_wait_low_prio = 0 Max_time_alloc_bcb_cond_wait_low_prio = 0 Avg_time_alloc_bcb_cond_wait_low_prio = 0 Num_alloc_bcb_prioritize_vacuum = 0 Num_victim_use_invalid_bcb = 0 The timer values for alloc_bcb_get_victim_search_own_private_list are: Num_alloc_bcb_get_victim_search_own_private_list = 0 Total_time_alloc_bcb_get_victim_search_own_private_list = 0 Max_time_alloc_bcb_get_victim_search_own_private_list = 0 Avg_time_alloc_bcb_get_victim_search_own_private_list = 0 The timer values for alloc_bcb_get_victim_search_others_private_list are: Num_alloc_bcb_get_victim_search_others_private_list = 0 Total_time_alloc_bcb_get_victim_search_others_private_list = 0 Max_time_alloc_bcb_get_victim_search_others_private_list = 0 Avg_time_alloc_bcb_get_victim_search_others_private_list = 0 The timer values for alloc_bcb_get_victim_search_shared_list are: Num_alloc_bcb_get_victim_search_shared_list = 0 Total_time_alloc_bcb_get_victim_search_shared_list = 0 Max_time_alloc_bcb_get_victim_search_shared_list = 0 Avg_time_alloc_bcb_get_victim_search_shared_list = 0 Num_victim_assign_direct_vacuum_void = 0 Num_victim_assign_direct_vacuum_lru = 0 Num_victim_assign_direct_flush = 0 Num_victim_assign_direct_panic = 0 Num_victim_assign_direct_adjust_lru = 0 Num_victim_assign_direct_adjust_lru_to_vacuum = 0 Num_victim_assign_direct_search_for_flush = 0 Num_victim_shared_lru_success = 0 Num_victim_own_private_lru_success = 0 Num_victim_other_private_lru_success = 0 Num_victim_shared_lru_fail = 0 Num_victim_own_private_lru_fail = 0 Num_victim_other_private_lru_fail = 0 Num_victim_all_lru_fail = 0 Num_victim_get_from_lru = 0 Num_victim_get_from_lru_was_empty = 0 Num_victim_get_from_lru_fail = 0 Num_victim_get_from_lru_bad_hint = 0 Num_lfcq_prv_get_total_calls = 0 Num_lfcq_prv_get_empty = 0 Num_lfcq_prv_get_big = 0 Num_lfcq_shr_get_total_calls = 0 Num_lfcq_shr_get_empty = 0 The timer values for DWB_flush_block are: Num_DWB_flush_block = 0 Total_time_DWB_flush_block = 0 Max_time_DWB_flush_block = 0 Avg_time_DWB_flush_block = 0 The timer values for DWB_file_sync_helper are: Num_DWB_file_sync_helper = 0 Total_time_DWB_file_sync_helper = 0 Max_time_DWB_file_sync_helper = 0 Avg_time_DWB_file_sync_helper = 0 The timer values for DWB_flush_block_cond_wait are: Num_DWB_flush_block_cond_wait = 0 Total_time_DWB_flush_block_cond_wait = 0 Max_time_DWB_flush_block_cond_wait = 0 Avg_time_DWB_flush_block_cond_wait = 0 The timer values for DWB_flush_block_sort are: Num_DWB_flush_block_sort = 0 Total_time_DWB_flush_block_sort = 0 Max_time_DWB_flush_block_sort = 0 Avg_time_DWB_flush_block_sort = 0 The timer values for DWB_decache_pages_after_write are: Num_DWB_decache_pages_after_write = 0 Total_time_DWB_decache_pages_after_write = 0 Max_time_DWB_decache_pages_after_write = 0 Avg_time_DWB_decache_pages_after_write = 0 The timer values for DWB_wait_flush_block are: Num_DWB_wait_flush_block = 0 Total_time_DWB_wait_flush_block = 0 Max_time_DWB_wait_flush_block = 0 Avg_time_DWB_wait_flush_block = 0 The timer values for DWB_wait_file_sync_helper are: Num_DWB_wait_file_sync_helper = 0 Total_time_DWB_wait_file_sync_helper = 0 Max_time_DWB_wait_file_sync_helper = 0 Avg_time_DWB_wait_file_sync_helper = 0 The timer values for DWB_flush_force are: Num_DWB_flush_force = 0 Total_time_DWB_flush_force = 0 Max_time_DWB_flush_force = 0 Avg_time_DWB_flush_force = 0 The timer values for Log_LZ4_compress are: Num_Log_LZ4_compress = 0 Total_time_Log_LZ4_compress = 0 Max_time_Log_LZ4_compress = 0 Avg_time_Log_LZ4_compress = 0 The timer values for Log_LZ4_decompress are: Num_Log_LZ4_decompress = 0 Total_time_Log_LZ4_decompress = 0 Max_time_Log_LZ4_decompress = 0 Avg_time_Log_LZ4_decompress = 0 Num_alloc_bcb_wait_threads_high_priority = 0 Num_alloc_bcb_wait_threads_low_priority = 0 Num_flushed_bcbs_wait_for_direct_victim = 0 Num_lfcq_big_private_lists = 0 Num_lfcq_private_lists = 1 Num_lfcq_shared_lists = 0 Num_data_page_avoid_dealloc = 0 Num_data_page_avoid_victim = 0 Num_data_page_fix_ext: WORKER,PAGE_HEAP ,OLD_PAGE_IN_PB ,READ ,UNCOND = 8 WORKER,PAGE_VOLHEADER,OLD_PAGE_IN_PB ,READ ,UNCOND = 30 WORKER,PAGE_VOLBITMAP,OLD_PAGE_IN_PB ,READ ,UNCOND = 15 WORKER,PAGE_BTREE_R ,OLD_PAGE_IN_PB ,READ ,UNCOND = 5 Num_data_page_promote_ext: Num_data_page_promote_time_ext: Num_data_page_unfix_ext: WORKER,PAGE_HEAP ,BUF_NON_DIRTY,HOLDER_NON_DIRTY,READ = 8 WORKER,PAGE_VOLHEADER,BUF_NON_DIRTY,HOLDER_NON_DIRTY,READ = 30 WORKER,PAGE_VOLBITMAP,BUF_NON_DIRTY,HOLDER_NON_DIRTY,READ = 15 WORKER,PAGE_BTREE_R ,BUF_NON_DIRTY,HOLDER_NON_DIRTY,READ = 5 Time_data_page_lock_acquire_time: Time_data_page_hold_acquire_time: Time_data_page_fix_acquire_time: WORKER,PAGE_HEAP ,OLD_PAGE_IN_PB ,READ ,UNCOND = 27 WORKER,PAGE_VOLHEADER,OLD_PAGE_IN_PB ,READ ,UNCOND = 167 WORKER,PAGE_VOLBITMAP,OLD_PAGE_IN_PB ,READ ,UNCOND = 40 WORKER,PAGE_BTREE_R ,OLD_PAGE_IN_PB ,READ ,UNCOND = 23 Num_mvcc_snapshot_ext: DELETE ,INS_VACUUMED ,VISIBLE = 5 SNAPSHOT,INS_VACUUMED ,VISIBLE = 5 Time_obj_lock_acquire_time: Thread_stats_counters_timers: Thread_pgbuf_daemon_stats_counters_timers: Num_dwb_flushed_block_volumes: Thread_loaddb_stats_counters_timers: csql> ;.hist off **ì§ˆì˜ ìˆ˜í–‰ ì‹œê°„ì„ ì¶œë ¥(;TIme)** **;TIme** 세션 ëª…ë ¹ì–´ë¡œ 질ì˜ë¥¼ 수행한 ì‹œê°„ì„ ì¶œë ¥í•˜ë„ë¡ ì„¤ì •í• ìˆ˜ 있다. **ON** í˜¹ì€ **OFF** 로 ì§€ì •í•˜ë©°, ì¸ìžê°€ 없으면 현재 ì„¤ì •ê°’ì„ ë³´ì—¬ì¤€ë‹¤. ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. **SELECT** 질ì˜ì—서는 페치(fetch)한 ë ˆì½”ë“œë¥¼ ì¶œë ¥í•˜ëŠ” 시간까지 í¬í•¨í•œë‹¤. ë”°ë¼ì„œ, **SELECT** 질ì˜ì—서 ëª¨ë“ ë ˆì½”ë“œì˜ ì¶œë ¥ì´ í•œ ë²ˆì— ë난 수행 ì‹œê°„ì„ ë³´ë ¤ë©´ CSQL ì¸í„°í”„리터 수행 시 **\-\-no-pager** ì˜µì…˜ì„ ì‚¬ìš©í•´ì•¼ 한다. :: $ csql -u dba --no-pager demodb csql> ;time ON csql> ;time TIME IS ON **ì§ˆì˜ ê²°ê³¼ë¥¼ 칼럼 당 한 ë¼ì¸ìœ¼ë¡œ ì¶œë ¥(;LINe-output)** ì´ ê°’ì„ **ON** 으로 ì„¤ì •í•˜ë©´ ì§ˆì˜ ê²°ê³¼ ë ˆì½”ë“œë¥¼ 칼럼 당 한 ë¼ì¸ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. 기본 ì„¤ì •ì€ OFF로서, 한 ë ˆì½”ë“œëŠ” 한 ë¼ì¸ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. :: csql> ;line-output ON csql> select * from athlete; === <Result of SELECT Command in Line 1> === <00001> code : 10999 name : 'Fernandez Jesus' gender : 'M' nation_code: 'ESP' event : 'Handball' <00002> code : 10998 name : 'Fernandez Jaime' gender : 'M' nation_code: 'AUS' event : 'Rowing' ... **ì§ˆì˜ ìˆ˜í–‰ ì´ë ¥ 확ì¸(;HISTORYList)** 앞서 ìˆ˜í–‰ëœ ëª…ë ¹ì–´(ìž…ë ¥ ë‚´ìš©)를 수행 번호를 í¬í•¨í•œ 리스트로 보여준다. :: csql> ;historylist ----< 1 >---- select * from nation; ----< 2 >---- select * from athlete; **ì§€ì •ëœ ìˆ˜í–‰ ë²ˆí˜¸ì— í•´ë‹¹í•˜ëŠ” ìž…ë ¥ ë‚´ìš©ì„ ë²„í¼ë¡œ 불러오기(;HISTORYRead)** **;HISTORYRead** 세션 ëª…ë ¹ì–´ë¥¼ 사용해 ì§€ì •ëœ **;HISTORYList** ì—서 확ì¸í•œ 수행 ë²ˆí˜¸ì— í•´ë‹¹í•˜ëŠ” ë‚´ìš©ì„ ëª…ë ¹ì–´ 버í¼ë¡œ 불러올 수 있다. 해당 SQL ë¬¸ì„ ì§ì ‘ ìž…ë ¥í•œ 것과 ê°™ì€ ìƒíƒœì´ë¯€ë¡œ 바로 **;run** ë˜ëŠ” **;xrun** 를 ìž…ë ¥í• ìˆ˜ 있다. :: csql> ;historyread 1 **기본 편집기를 호출(;EDIT)** ì§€ì •ëœ íŽ¸ì§‘ê¸°ë¥¼ 호출하는 세션 ëª…ë ¹ì–´ì´ë‹¤. 기본 편집기는 Linuxì—서는 viì´ê³ , Windowsì—서는 메모장ì´ë‹¤. 다른 편집기로 ì§€ì •í•˜ë ¤ë©´ **;EDITOR_Cmd** ëª…ë ¹ì–´ë¥¼ ì´ìš©í•œë‹¤. .. option:: format / fmt **format** ë˜ëŠ” **fmt** ì˜µì…˜ì„ í†µí•´ SQLë¬¸ì„ í¬ë§·í•œ 후 íŽ¸ì§‘í• ìˆ˜ 있다. í¬ë§·í„° 등ë¡ì€ **;FOrmatter_cmd** 세션 ëª…ë ¹ì–´ë¥¼ ì´ìš©í•œë‹¤. :: csql> ;edit SELECT * FROM t1 csql> ;edit format SELECT * FROM t1 **í¬ë§·í„° ì„¤ì •(;FOrmatter_cmd)** **;EDIT** 세션 ëª…ë ¹ì–´ì—서 옵션으로 사용ë í¬ë§·í„°ë¥¼ ì§€ì •í•œë‹¤. ì˜ˆì œì™€ ê°™ì´ ì‚¬ìš©ìžê°€ ì„¤ì •í•˜ì—¬ ì‚¬ìš©í• ìˆ˜ ìžˆê³ , OS 환경변수(CUBRID_CSQL_FORMATTER ë˜ëŠ” FORMATTER, ë‘ í™˜ê²½ë³€ìˆ˜ê°€ ì„¤ì •ëœ ê²½ìš° CUBRID_CSQL_FORMATTER를 사용)를 미리 등ë¡í•˜ì—¬ ì‚¬ìš©í• ìˆ˜ 있다. :: csql> ;formatter_cmd /usr/local/bin/fsqlf $ export CUBRID_CSQL_FORMATTER=/home/cubrid/bin/fsqlf ë˜ëŠ” $ export FORMATTER=/home/cubrid/bin/fsqlf .. note:: Free SQL Formatter ì‚¬ìš©ì„ ê¶Œê³ í•©ë‹ˆë‹¤. 다운로드 URL: https://github.com/CUBRID/fsqlf/releases/download/v.1.1.0-csql/fsqlf-1.1.0.csql.tar.gz **편집기 ì„¤ì •(;EDITOR_Cmd)** **;EDIT** 세션 ëª…ë ¹ì–´ì—서 사용ë 편집기를 ì§€ì •í•œë‹¤. ì˜ˆì œì™€ ê°™ì´ ê¸°ë³¸ íŽ¸ì§‘ê¸°ì¸ vi ëŒ€ì‹ ì— í•´ë‹¹ ì‹œìŠ¤í…œì— ì„¤ì¹˜ëœ ë‹¤ë¥¸ 편집기(예: emacs)를 ì„¤ì •í• ìˆ˜ 있다. :: csql> ;editor_cmd emacs csql> ;edit OS 환경변수(CUBRID_CSQL_EDITOR ë˜ëŠ” EDITOR, ë‘ í™˜ê²½ë³€ìˆ˜ê°€ ì„¤ì •ëœ ê²½ìš° CUBRID_CSQL_EDITOR를 사용)를 미리 등ë¡í•˜ì—¬ ì‚¬ìš©í• ìˆ˜ë„ ìžˆë‹¤. :: export CUBRID_CSQL_EDITOR=emacs ë˜ëŠ” export EDITOR=emacs **싱글 ë¼ì¸ 모드 ì„¤ì •(;SIngleline)** 싱글 ë¼ì¸ 모드를 **ON** ë˜ëŠ” **OFF** 로 ì„¤ì •í•˜ëŠ” ëª…ë ¹ì–´ì´ë‹¤ (기본값 **ON**). 싱글 ë¼ì¸ 모드 ONì—서는 ì„¸ë¯¸ì½œë¡ (;)ê³¼ ENTER를 ìž…ë ¥í•˜ë©´ SQLë¬¸ì´ ë°”ë¡œ 실행ëœë‹¤. 싱글 ë¼ì¸ 모드 OFFì—서는 여러 ê°œì˜ SQL ë¬¸ì„ ì €ìž¥í•´ ë‘었다가 ;xr í˜¹ì€ ;ru 세션 ëª…ë ¹ì–´ë¡œ í•œêº¼ë²ˆì— ìˆ˜í–‰í•œë‹¤. 만약, ON ë˜ëŠ” OFF 를 ì§€ì •í•˜ì§€ 않으면 현재 ì„¤ì •ëœ ê°’ì„ ë³´ì—¬ì¤€ë‹¤. :: csql> ;singleline off SINGLE IS OFF csql> ;singleline SINGLE IS OFF **csql 세션 ì „í™˜(;Connect)** CSQLì„ ì¢…ë£Œí•˜ì§€ ì•Šê³ ë‹¤ë¥¸ 사용ìžë¡œ ì ‘ì†ì„ ì „í™˜í•˜ê¸° 위한 세션 ëª…ë ¹ì–´ì´ë‹¤. ëª…ë ¹ì–´ 형ì‹ì€ 다ìŒê³¼ 같다. * user: ì ‘ì†í• ì‚¬ìš©ìž ì´ë¦„ * database: ì ‘ì†í• ë°ì´í„°ë² ì´ìФ ì´ë¦„ (ìƒëžµ 시, 현재 ì ‘ì†í•œ ë°ì´í„°ë² ì´ìФ) * host: ì ‘ì†í• 호스트 ì´ë¦„ (ìƒëžµ 시, localhost) :: csql> ;connect public csql> ;connect dba csql> ;connect public testdb csql> ;connect dba demodb csql> ;connect Peter testdb@192.168.0.1 csql> ;connect public demodb@localhost .. warning:: #. ';connect' 세션 ëª…ë ¹ì–´ë¥¼ 실행하면 세션 ì „í™˜ 성공 여부와 관계 ì—†ì´ í˜„ìž¬ì˜ CSQL 세션 ì—°ê²°ì€ í•´ì œëœë‹¤. #. CSQLì´ ì‹œìŠ¤í…œ ê´€ë¦¬ìž ëª¨ë“œì¸ ê²½ìš° ';connect' 세션 ëª…ë ¹ì–´ëŠ” ì‚¬ìš©í• ìˆ˜ 없다 (csql -u dba \-\-sysadm demodb í˜•íƒœì˜ ëª…ë ¹ìœ¼ë¡œ CSQL 수행한 경우).