■ Undo Log란? • 임시 테이블 스페이스에있는 언두 로그는 사용자 정의 임시 테이블의 데이터를 수정하는 트랜잭션에 사용됩니다. 실행 취소 로그 레코드의 집합으로 Transaction 실행후 Rollback 시 Undo Log 를 참조해 이전 데이터로 복구할수 있도록 로깅 해놓은 영역입니다. 서버가 실행되는 동안 롤백에만 사용됩니다. 이 유형의 실행 언두 로그는 재실행 로깅 I/O를 피함으로써 성능을 향상시킵니다. 트랜잭션이 데이터를 쓸 때 항상 테이블 인덱스 또는 데이터(버퍼 풀 또는 실제 파일)에 데이터를 삽입합니다. 개인 복사본이 생성되지 않습니다. 활성 XtraDB/InnoDB 트랜잭션에 의해 수정되는 이전 버전의 데이터는 실행 취소 로그에 저장됩니다. 그런 다음 원본 데이터를 복원하거나 일..
■ InnoDB 디스크 I/O InnoDB는 I/O가 진행되는 동안 다른 데이터베이스 작업이 진행되도록 허용하면서 많은 스레드를 만들어 I/O 작업을 처리함으로써 비동기 디스크 I/O를 사용합니다. Linux 및 Windows 플랫폼에서 InnoDB는 사용 가능한 OS 및 라이브러리 기능을 사용하여 "기본"비동기 I/O를 수행합니다. 다른 플랫폼에서 InnoDB는 여전히 I/O 스레드를 사용하지만 스레드는 실제로 I/O 요청이 완료 될 때까지 기다릴 수 있습니다. 이 기술을 "시뮬레이션 된"비동기 I/O라고합니다. ▶ Read-Ahead(미리읽기) InnoDB가 데이터가 곧 필요할 가능성이 높다고 판단하면 미리 읽기 작업을 수행하여 해당 데이터를 버퍼 풀로 가져와 메모리에서 사용할 수 있게합니다. 연속된..
■ InnoDB 버퍼풀 테이블InnoDB INFORMATION_SCHEMA 버퍼풀 테이블은 InnoDB 버퍼 풀 내의 페이지에 대한 버퍼풀 상태정보 및 메타 데이터를 제공합니다.InnoDB INFORMATION_SCHEMA 버퍼풀 테이블에는 아래 나열된 테이블이 포함됩니다.mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_BUFFER%';+-----------------------------------------------+| Tables_in_INFORMATION_SCHEMA (INNODB_BUFFER%) |+-----------------------------------------------+| INNODB_BUFFER_PAGE_LRU ..
■ InnoDB 시스템 테이블InnoDB INFORMATION_SCHEMA 시스템 테이블을 사용하여 InnoDB가 관리하는 스키마 객체에 대한 메타 데이터를 추출할 수 있습니다. 이 정보는 InnoDB 내부 시스템 테이블 (InnoDB 데이터 사전이라고도 함)에서 가져 오며, 일반 InnoDB 테이블처럼 직접 쿼리할 수 없습니다. 전통적으로 InnoDB 모니터의 기술을 사용하여 이러한 유형의 정보를 얻고, InnoDB 모니터를 설정하고 SHOW ENGINE INNODB STATUS 문에서 출력을 구문 분석합니다. InnoDB INFORMATION_SCHEMA 테이블 인터페이스를 사용하면 SQL을 사용하여이 데이터를 쿼리할 수 있습니다. 해당 내부 시스템 테이블이없는 INNODB_SYS_TABLESTATS..
■ INNODB_METRICS TableINNODB_METRICS 테이블은 InnoDB용 성능 스키마 테이블의 특정 초점 영역을 보완하는 다양한 InnoDB 성능 정보를 제공합니다.간단한 쿼리로 시스템의 전반적인 상태를 확인할 수 있습니다. 각 모니터는 카운터 정보를 수집하도록 계측 된 InnoDB 소스 코드 내의 지점을 나타냅니다. 각 카운터를 시작, 중지 및 재설정 할 수 있습니다. 공통 모듈 이름을 사용하여 카운터 그룹에 대해 이러한 작업을 수행 할 수도 있습니다. 기본적으로 비교적 적은 양의 데이터가 수집됩니다. 카운터를 시작, 중지 및 재설정하려면 카운터 이름, 모듈의 이름, "%" 문자를 사용하는 와일드카드 일치 또는 특수 키워드를 사용하여 시스템 변수 innodb_monitor_enable,..
■ INNODB_BUFFER_PAGE TableINNODB_BUFFER_PAGE 테이블은 InnoDB 버퍼 풀의 각 페이지에 대한 정보를 제공합니다. 중요사항INNODB_BUFFER_PAGE 테이블을 쿼리하면 성능에 영향을 줄 수 있습니다. 성능 영향을 인식하고 허용할 수 있다고 결정하지 않는한 프로덕션 시스템에서이 테이블을 쿼리하면 안됩니다.프로덕션 시스템의 성능에 영향을 주지 않으려면 조사하려는 문제를 재현하고 테스트 인스턴스에서 버퍼풀 통계를 쿼리합니다. 각 컬럼의 정보는 다음과 같습니다. • POOL_ID버퍼 풀 ID입니다. 여러 버퍼 풀 인스턴스를 구별하기위한 식별자입니다. • BLOCK_ID버퍼 풀 블록 ID입니다. • SPACE테이블 스페이스 ID입니다. INNODB_SYS_TABLES.SP..
□ Auto Commit ModeInnoDB로 데이터를 가져올 때 오토커밋 모드는 모든 삽입에 대해 디스크로 로그 플러시를 수행하므로 오프시킵니다. 가져 오기 작업 중에 오토 커밋을 비활성화하려면 SET autocommit 및 COMMIT 문으로 감쌉니다.SET autocommit=0;... SQL import statements ...COMMIT;mysqldump 옵션 --opt는 SET autocommit 및 COMMIT 문으로 랩핑하지 않아도 InnoDB 테이블로 빠르게 가져 올수 있도록 덤프 파일을 작성합니다. □ UNIQUE Key 제약해제보조 키에 UNIQUE 제약 조건이 있는 경우, 가져 오기 세션 중에 고유성 검사를 일시적으로 해제하여 테이블 가져 오기 속도를 높일 수 있습니다.SET un..
■ InnoDB 모니터 타입InnoDB 모니터에는 두 가지 유형이 있습니다.+ 표준 InnoDB 모니터는 다음 유형의 정보를 표시합니다.- 메인 백그라운드 스레드에 의해 수행 된 작업- 세마포어 대기- 가장 최근의 외래 키 및 교착 상태 오류에 대한 데이터- 트랜잭션에 의한 잠금대기- 활성 트랜잭션이 보유한 테이블 및 레코드 잠금- 보류중인 I/O 작업 및 관련 통계- 삽입 버퍼 및 적응 형 해시 인덱스 통계- 재실행 로그 데이터- 버퍼 풀 통계- 행 연산 데이터 + InnoDB 잠금 모니터는 표준 InnoDB 모니터 출력의 일부로 추가 잠금 정보를 인쇄합니다. ■ InnoDB 모니터 사용InnoDB 모니터가 주기적인 출력을 위해 활성화되면 InnoDB는 약 15초마다 출력을 mysqld서버 표준 오류 ..
■ 압축 테이블 소개 프로세서와 캐시 메모리는 디스크 저장 장치보다 속도가 빨라지므로 많은 작업 부하가 디스크 바인딩됩니다. 데이터 압축을 통해 적은 CPU 사용 비용으로 데이터베이스 크기를 줄이고 I/O를 줄이며 처리량을 향상시킬 수 있습니다. 압축은 특히 자주 사용하는 데이터를 메모리에 유지하기에 충분한 RAM이있는 시스템에서 읽기 집약적인(select 쿼리의 범위가 많은) 응용 프로그램에 특히 유용합니다. ROW_FORMAT = COMPRESSED로 작성된 InnoDB 테이블은 구성된 innodb_page_size 값보다 디스크에서 더 작은 페이지 크기를 사용할 수 있습니다. 페이지가 작을수록 디스크에서 읽고 쓰는데 적은 I/O가 필요하며 특히 SSD 장치에 유용합니다. 압축된 페이지 크기는 CRE..
InnoDB는 운영 체제 스레드를 사용하여 사용자 트랜잭션의 요청을 처리합니다.(트랜잭션은 커밋 또는 롤백하기 전에 InnoDB에 많은 요청을 발행 할 수 있습니다.) 컨텍스트 전환이 효율적인 멀티 코어 프로세서가 있는 최신 운영 체제 및 서버에서는 대부분의 워크로드가 동시 스레드 수에 제한없이 잘 실행됩니다. MySQL 5.5 이상의 확장성 향상은 InnoDB 내에서 동시에 실행되는 스레드 수를 제한 할 필요성을 줄입니다. 스레드간 컨텍스트 전환을 최소화하는 것이 도움이되는 상황에서 InnoDB는 여러 가지 기술을 사용하여 동시에 실행중인 운영 체제 스레드 수 (한 번에 처리되는 요청 수)를 제한 할 수 있습니다. InnoDB가 사용자 세션으로부터 새 요청을 수신 할 때 동시에 실행중인 스레드 수가 사..
■ Innodb Buffer Pool 크기 설정 서버가 실행되는 동안 InnoDB 버퍼 풀 크기를 오프라인(시작시) 또는 온라인으로 구성 할 수 있습니다. 이 곳에 설명 된 동작은 두 방법 모두에 적용됩니다. innodb_buffer_pool_size를 늘리거나 줄이면 작업이 청크로 수행됩니다. 청크 크기는 innodb_buffer_pool_chunk_size 구성 옵션에 의해 정의되며 기본값은 128M입니다. 버퍼 풀 크기는 항상 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances의 배수와 같아야합니다. innodb_buffer_pool_size를 innodb_buffer_pool_chunk_size * innodb_buffer_pool_inst..
■ Bufferpool 버퍼 풀은 InnoDB가 액세스 할 때 테이블 및 인덱스 데이터를 캐시하는 메인 메모리의 영역입니다. 버퍼 풀은 자주 사용하는 데이터를 메모리에서 직접 처리 할 수있게하여 처리 속도를 높입니다. 전용 서버에서 실제 메모리의 최대 80%정도가 버퍼 풀에 할당됩니다. 대량 읽기 조작의 효율성을 위해 버퍼 풀은 여러 행을 보유 할 수있는 페이지로 분할됩니다. 캐시 관리 효율성을 위해 버퍼 풀은 링크 된 페이지 목록으로 구현됩니다. 거의 사용되지 않는 데이터는 다양한 LRU 알고리즘을 사용하여 캐시에서 종료(혹은 만료:aged out)됩니다. 버퍼 풀을 활용하여 자주 액세스하는 데이터를 메모리에 유지하는 노하우(기술)는 MySQL 튜닝의 중요한 측면입니다. ▶ Buffer Pool LRU..