• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 1. 데이터 정의 문
    2. 데이터 조작 문
    1. CALL 구문
    2. DELETE 구문
    3. DO 구문
    4. HANDLER 구문
    5. INSERT 구문
    6. LOAD DATA INFILE 구문
    7. LOAD XML 구문
    8. REPLACE 구문
    9. SELECT 구문
    10. 서브 쿼리 구문
    11. UPDATE 구문
    3. MySQL 트랜잭션과 잠금 문
    4. 복제 문
    5. Prepared Statements위한 SQL 구문
    6. MySQL 복합문 구문
    7. 데이터베이스 관리 문
    8. MySQL 유틸리티 문
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

13.2.4 HANDLER 구문

HANDLER tbl_name OPEN [ [AS] alias]

HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]

HANDLER tbl_name CLOSE 

HANDLER 문은 테이블 스토리지 엔진 인터페이스에 직접 액세스를 제공합니다. 이것은 InnoDB 및 MyISAM 테이블에 사용할 수 있습니다.

HANDLER ... OPEN 문은 테이블을 열고 그것을 이후의 HANDLER ... READ 문을 사용하여 액세스 할 수 있도록합니다. 이 테이블 오브젝트는 다른 세션에 의해 공유되어 있지 않고,이 세션이 HANDLER ... CLOSE 를 호출하거나 세션이 끝날 때까지 청산되지 않습니다. 별칭을 사용하여 테이블을 열면 그 열린 테이블에 다른 HANDLER 문을 사용하여 나중에 참조 테이블 이름 대신 별칭을 사용해야합니다.

첫 번째 HANDLER ... READ 구문은 지정된 인덱스가 특정 값을 충족하며 WHERE 조건이 충족 된 행을 가져옵니다. 멀티 컬럼 인덱스가 있으면 인덱스 컬럼 값을 쉼표로 구분 된 목록으로 지정할 수 있습니다. 인덱스의 모든 컬럼의 값을 지정하거나 인덱스 컬럼의 좌단의 프리픽스의 값을 지정합니다. 인덱스 my_idx 에 col_a , col_b 및 col_c 라는 3 개의 컬럼이 그 순서로 포함되어 있다고합니다. HANDLER 문은 인덱스의 3 개 모든 컬럼 또는 왼쪽의 프리픽스의 컬럼의 값을 지정할 수 있습니다. 예 :

 HANDLER ... READ my_idx = (col_a_val, col_b_val, col_c_val) ...
 HANDLER ... READ my_idx = (col_a_val, col_b_val) ...
 HANDLER ... READ my_idx = (col_a_val) ...

HANDLER 인터페이스를 사용하여 테이블의 PRIMARY KEY 를 참조하려면 따옴표 붙은 식별자 `PRIMARY` 을 사용합니다.

 HANDLER tbl_name READ`PRIMARY` ...

두 번째 HANDLER ... READ 구문은 WHERE 조건에 일치하는 인덱스 순서로 테이블 행을 가져옵니다.

세 번째 HANDLER ... READ 구문은 WHERE 조건에 일치하는 자연적인 행 순서로 테이블 행을 가져옵니다. 이것은 풀 테이블 스캔이 원할 경우 HANDLER tbl_name READ index_name 더 빠릅니다. 자연 행 순서는 행이 MyISAM 테이블 데이터 파일에 저장되는 순서입니다. 이 문은 InnoDB 테이블에서도되지만 개별 데이터 파일이 존재하지 않기 때문에이 같은 개념은 없습니다.

LIMIT 절을 사용하지 않으면 모든 형식의 HANDLER ... READ 가 단일 행 (사용 가능한 경우)를 가져옵니다. 특정 행 수를 반환하려면 LIMIT 절을 포함합니다. 그 구문은 SELECT 문의 경우와 동일합니다. 섹션 13.2.9 "SELECT 구문" 을 참조하십시오.

HANDLER ... CLOSE 은 HANDLER ... OPEN 오픈 된 테이블을 닫습니다.

일반 SELECT 문 대신 HANDLER 인터페이스를 사용하는 이유는 다음의 몇 가지가 있습니다.

  • HANDLER 는 SELECT 보다 빠릅니다.

    • HANDLER ... OPEN 대해 지정된 스토리지 엔진 핸들러 객체가 할당됩니다. 이 개체는 테이블에 대한 이후의 HANDLER 문에 재사용됩니다. 문마다 다시 초기화 할 필요가 없습니다.

    • 관련 해석이 적습니다.

    • 최적화 또는 쿼리 체크의 오버 헤드가 없습니다.

    • 핸들러 인터페이스 (예 : 더티 읽기 가 허용되는 것과 같은) 데이터의 일관된 모양을 제공 할 필요가 없기 때문에 스토리지 엔진은 SELECT 이 일반적으로 허용하지 않는 최적화를 사용할 수 있습니다.

  • HANDLER 하여 ISAM 비슷한 낮은 수준의 인터페이스를 사용하는 MySQL 애플리케이션에 이식이 용이합니다. (키 값 저장 패러다임을 사용하는 응용 프로그램을 적응시키기위한 대안은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.)

  • HANDLER 를 사용하면 SELECT 에서는 실현이 어려운 (또는 불가능 마저있다) 방법으로 데이터베이스를 추적 할 수 있습니다. HANDLER 인터페이스는 데이터베이스에 대화 형 사용자 인터페이스를 제공하는 응용 프로그램 작업시 데이터를 조사하기위한 더 자연스러운 방법입니다.

HANDLER 는 다소 낮은 수준의 문입니다. 예를 들어, 일관성이 제공되지 않습니다. 즉, HANDLER ... OPEN 은 테이블의 스냅 샷을 만들지 않고 테이블 잠금도하지 않습니다. 이것은 HANDLER ... OPEN 문이 발행 된 후 테이블 데이터를 (현재 세션 또는 다른 세션에서) 변경할 수 있으며, 이러한 변화가 HANDLER ... NEXT 또는 HANDLER ... PREV 스캔 에 부분적으로 표시되지 않을 수 있음을 나타냅니다.

열린 핸들러를 닫고 다시 열도록 표시 할 수 있습니다. 그 경우,이 핸들러는 테이블의 위치를​​ 잃게됩니다. 이것은 다음의 두 경우에 해당하는 경우 발생합니다.

  • 이 핸들러의 테이블에 하나의 세션이 FLUSH TABLES 또는 DDL 문을 실행하고있다.

  • 이 핸들러를 열려있는 세션이 테이블을 사용하는 HANDLER 이외의 문을 실행하고있다.

테이블에 TRUNCATE TABLE 은 HANDLER OPEN 에서 열린 테이블의 모든 핸들러를 닫습니다.

FLUSH TABLES tbl_name WITH READ LOCK 에서 플래시 된 테이블이 HANDLER 에서 열린 경우, 그 핸들러는 암묵적으로 플래시되어 그 위치를 잃게됩니다.

HANDLER 는 파티션 된 테이블에서 지원되지 않습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved