• 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의 개념과 아키텍처
    1. MySQL 과 ACID 모델
    2. InnoDB 트랜잭션 모델 및 잠금
    3. InnoDB 잠금 모드
    4. 일관성 nonlock 읽기
    5. 잠금 읽기 (SELECT ... FOR UPDATE 및 SELECT ... LOCK IN SHARE MODE)
    6. InnoDB 레코드 격차 및 넥스트 키 잠금
    7. 넥스트키 로크에 의한 팬텀 문제 해결
    8. InnoDB의 다양한 SQL문에서 설정된 잠금
    9. 암시적 트랜잭션 커밋과 롤백
    10. 교착 상태 감지 및 롤백
    11. 교착 상태 해결 방법
    12. InnoDB 멀티 버전
    13. InnoDB 테이블 및 인덱스 구조
    1. InnoDB 테이블의 .frm 파일의 역할
    2. 클러스터 인덱스와 보조 인덱스
    3. FULLTEXT 인덱스
    4. InnoDB 인덱스의 물리적 구조
    5. 삽입 버퍼
    6. 적응 형 해시 인덱스
    7. 물리적 행 구조
    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의 성능
    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.2.13.5 삽입 버퍼

종종 데이터베이스 응용 프로그램은 새로운 행이 기본 키의 오름차순으로 삽입됩니다. 이 경우 클러스터 된 인덱스의 순서가 기본 키와 동일하다는 레이아웃을 위해, InnoDB 테이블에 삽입 할 때 디스크에서 랜덤 읽기가 필요하지 않습니다.

한편 일반적으로 보조 인덱스는 고유 아니라 보조 인덱스에 삽입 비교적 무작위 순서로 발생합니다. 마찬가지로, 삭제 및 업데이트가 보조 인덱스의 인접하지 않은 데이터 페이지가 영향을받을 가능성이 있습니다. 따라서 InnoDB 에서 특별한 메커니즘을 사용하지 않고 다수의 임의의 디스크 I / O가 발생합니다.

인덱스 레코드를 삽입하거나 삭제 대상으로 표시하거나 고유하지 않은 보조 인덱스에서 제거 할 때 InnoDB 가 보조 인덱스가 버퍼 풀 에 존재하는지 여부를 확인합니다. 이에 해당하는 경우, InnoDB 에 의해 변경이 직접 인덱스 페이지에 적용됩니다. 버퍼 풀 인덱스 페이지를 찾을 수없는 경우, InnoDB 에 의해 삽입 버퍼 라는 특별한 구조로 변경이 기록됩니다. 삽입 버퍼는 버퍼 풀에 완전히 수용되도록 크기가 작고 유지되기 때문에 변화를 아주 빠르게 적용 할 수 있습니다. 이 프로세스는 변경 버퍼 라고합니다. (이전에는 삽입에만 적용되어 있었기 때문에, 삽입 버퍼라고했습니다. 데이터 구조는 계속 삽입 버퍼라고합니다.)

삽입 버퍼를 비우기 위해 디스크 I / O

삽입 버퍼는 데이터베이스의 보조 인덱스 트리에 정기적으로 병합됩니다. 많은 경우 여러 변경을 인덱스 트리의 같은 페이지에 병합 할 수 있으므로 디스크 I / O 작업을 줄일 수 있습니다. 삽입 버퍼에 의해 테이블​​에 삽입 속도가 최대 15 배 늘어날 것으로 측정되어 있습니다.

삽입 버퍼 병합은 트랜잭션이 커밋 된 후에 발생 계속 수 있습니다. 사실, 이것은 서버가 종료하고 다시 시작한 후까지 계속 발생 가능성이 있습니다 ( 섹션 14.19.2 "InnoDB 복구 강제 실행" 을 참조하십시오).

많은 보조 인덱스가 갱신 될 필요가 있고, 많은 행이 삽입 된 경우, 삽입 버퍼 병합에 많은 시간이 걸릴 수 있습니다. 이 기간은 디스크 I / O가 증가합니다. 따라서 디스크에 부하가 걸리는 쿼리는 상당히 느려집니다. 또 하나의 중요한 백그라운드 I / O 작업은 퍼지 스레드 입니다 ( 섹션 14.2.12 "InnoDB 멀티 버전" 을 참조하십시오).

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