• 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 테이블 및 인덱스 구조
    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.12 InnoDB 멀티 버전

InnoDB 는 멀티 버전 스토리지 엔진 입니다. 병렬 실행 및 롤백 등의 트랜잭션 기능을 지원하기 위해 변경된 행의 이전 버전에 대한 정보가 유지됩니다. 이 정보는 테이블 스페이스에 롤백 세그먼트 라는 데이터 구조 (Oracle에서는 유사한 데이터 구조의 뒤에) 저장됩니다. InnoDB 는 트랜잭션 롤백에 필요한 취소 작업을 수행하기 위해 롤백 세그먼트의 정보가 사용됩니다. 또한이 정보는 일관성 읽기 위해 행의 초기 버전을 구축하는 데에도 사용됩니다.

멀티 버전 인테리어 설명

InnoDB 는 내부적으로 데이터베이스에 저장된 각 행에 3 개의 필드를 추가합니다. 6 바이트의 DB_TRX_ID 필드는 행을 삽입하거나 업데이트 한 마지막 트랜잭션에 대한 트랜잭션 식별자를 지시합니다. 또한 은행의 특별 비트가 삭제 된 것으로 표시하도록 설정되어있는 경우, 삭제는 내부적으로 갱신으로 처리됩니다. 각 행에는 롤 포인터라는 7 바이트의 DB_ROLL_PTR 필드도 포함되어 있습니다. 롤 포인터는 롤백 세그먼트에 기록 된 Undo 로그 레코드를 보여줍니다. 행이 갱신 된 경우 Undo 로그 레코드에 업데이트되기 전에 행의 내용을 재구성하는 데 필요한 정보가 포함되어 있습니다. 6 바이트의 DB_ROW_ID 필드에 새 행이 삽입되면 단조롭게 증가하는 행 ID가 포함되어 있습니다. InnoDB 에 의해 자동 생성 된 클러스터 된 인덱스는 행 ID 값이 포함됩니다. 그렇지 않으면 인덱스에 DB_ROW_ID 컬럼이 포함되는 것은 아닙니다.

롤백 세그먼트의 Undo 로그는 삽입 및 업데이트 Undo 로그에 분할됩니다. 삽입 Undo 로그는 트랜잭션 롤백에서만 필요하므로 트랜잭션 커밋 즉시 폐기합니다. 업데이트 Undo 로그도 일관성 독해 사용되지만, InnoDB 에 의해 스냅 샷이 할당 된 트랜잭션이 존재하지 않게 된 후에 만 제거 할 수 있습니다. 업데이트 Undo 로그의 스냅 샷 정보는 데이터베이스 행의 이전 버전을 구축 할 때 일관성 독해에 필요한 수 있습니다.

롤백 세그먼트를 관리하기위한 지침

트랜잭션 (일관성 독해만을 발행하는 트랜잭션을 포함)을 정기적으로 커밋하십시오. 그렇지 않으면, InnoDB 는 업데이트 Undo 로그에서 데이터를 파기 할 수 없기 때문에 롤백 세그먼트가 너무 커져서 테이블 공간이 가득 될 가능성이 있습니다.

일반적으로 롤백 세그먼트의 Undo 로그 레코드의 물리적 크기는 해당 삽입 된 행이나 갱신 된 행보다 작습니다. 이 정보를 사용하면 롤백 세그먼트에 필요한 공간을 계산할 수 있습니다.

InnoDB 멀티 버전 체계에서는 SQL 문에서 행을 삭제해도 해당 행은 즉시 데이터베이스에서 물리적으로 제거되지 않습니다. InnoDB 는 삭제에 기록 된 업데이트 Undo 로그 레코드가 삭제 된 경우에만 해당 행 및 인덱스 레코드를 물리적으로 제거합니다. 이러한 제거 작업은 퍼지 라고 매우 빠릅니다. 일반적으로 제거가 이루어지지 않았다 SQL 문과 같은 시간 순서로 실행됩니다.

테이블에서 작은 배치의 행을 거의 같은 속도로 삽입 및 제거하면 모든 "데드"행으로 인해 퍼지 스레드가 지연 시작하고 계속 증가 할 수 있습니다. 이렇게하면 모든면에서 디스크가 억제되어 매우 느립니다. 이런 경우는 새로운 행 작업을 억제하고 innodb_max_purge_lag 시스템 변수를 조정하여 더 많은 자원을 제거 스레드에 할당합니다. 자세한 내용은 섹션 14.12 "InnoDB 부팅 옵션 및 시스템 변수" 를 참조하십시오.

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