• 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 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    1. InnoDB 버퍼 풀 구성
    2. InnoDB 상호 배타적 잠금 및 읽기 / 쓰기 잠금 구현
    3. InnoDB를위한 메모리 할당 구성
    4. InnoDB 변경 버퍼링 구성
    5. InnoDB의 스레드 병렬성 구성
    6. InnoDB 백그라운드 I/O 스레드 수 구성
    7. 그룹 커밋
    8. InnoDB 마스터 스레드의 I/O 속도의 구성
    9. InnoDB 스핀 루프에서 PAUSE 명령 사용
    10. 스핀 록 폴링 구성
    11. InnoDB의 MySQL 성능 스키마와 통합
    12. 다중 롤백 세그먼트에 의한 확장성 향상
    13. InnoDB 퍼지 스케줄링 구성
    14. InnoDB의 읽기 전용 트랜잭션 최적화
    15. 체크섬의 고속화를위한 CRC32 체크섬 알고리즘의 사용
    16. 옵티 마이저 통계
    17. InnoDB 테이블에 ANALYZE TABLE의 복잡성 추정
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. 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 새로운 기능

14.13.14 InnoDB의 읽기 전용 트랜잭션 최적화

MySQL 5.6.4의 시점에서는 InnoDB 는 읽기 전용임을 알고있다 트랜잭션의 트랜잭션 ID ( TRX_ID 필드)의 설정에 관련된 오버 헤드를 피할 수 있습니다. 트랜잭션 ID는 쓰기 작업 또는 잠금 읽기 ( SELECT ... FOR UPDATE 등)을 수행 할 수있는 트랜잭션 에만 필요합니다. 불필요한 트랜잭션 ID를 삭제하면 쿼리 나 DML 문에 의해 읽기 뷰 가 구축 될 때마다 참조되는 내부 데이터 구조의 크기가 감소됩니다.

현재 InnoDB 는 다음과 같은 경우에 읽기 전용 트랜잭션을 검색합니다.

  • 트랜잭션이 START TRANSACTION READ ONLY 문에서 시작 된 경우. 이 경우 데이터베이스 ( InnoDB , MyISAM 또는 기타 유형의 테이블)에 대해 변경을 시도하면 오류가 발생하여 트랜잭션이 읽기 전용 상태가됩니다.

     ERROR 1792 (25006) : Can not execute statement in a READ ONLY transaction.
    

    그러나 읽기 전용 트랜잭션에서 세션 별 임시 테​​이블을 변경하거나 그 테이블에 대한 잠금 쿼리의 발행은 그 변경이나 잠금이 다른 어떤 트랜잭션도 표시되지 않기 때문에 계속 가능합니다.

  • autocommit 설정이 켜져 있기 때문에 트랜잭션이 하나의 문임을 보장 트랜잭션을 구성하는 하나의 문이 "비 록」의 SELECT 문이 있다면. 즉, FOR UPDATE 또는 LOCK IN SHARED MODE 절을 사용하지 않는 SELECT 입니다.

따라서 보고서 생성기 등의 읽기가 많은 애플리케이션의 경우, InnoDB 의 쿼리를 START TRANSACTION READ ONLY 및 COMMIT 내부에 그룹화하거나 SELECT 문을 실행하기 전에 autocommit 설정을 선택하거나 단순히 어떤 DML 문에 쿼리가 포함되지 않도록함으로써 그 쿼리의 순서를 조정할 수 있습니다.

START TRANSACTION 및 autocommit 내용은 섹션 13.3.1 "START TRANSACTION, COMMIT 및 ROLLBACK 구문" 을 참조하십시오.

참고

자동 커밋 비 잠금 및 읽기 전용 (AC-NL-RO)로 승인 된 트랜잭션은 InnoDB 의 특정 내부 데이터 구조에서 제외되므로 SHOW ENGINE INNODB STATUS 의 출력에 표시되지 않습니다. 이러한 트랜잭션은 정보 스키마에서만 표시됩니다.


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