■ 앞축에 관련된 InnoDB INFORMATION_SCHEMA 테이블 압축에 관한 InnoDB INFORMATION_SCHEMA 테이블에는 압축이 전체적으로 얼마나 잘 작동하는지에 대한 아주 유용한 정보를 제공하는 두개의 테이블이 있습니다. + INNODB_CMP 및 INNODB_CMP_RESET은 압축 조작 수 및 압축 수행에 소요된 시간에 대한 정보를 제공합니다. + INNODB_CMPMEM 및 INNODB_CMPMEM_RESET은 메모리가 압축을 위해 할당되는 방법에 대한 정보를 제공합니다. □ INNODB_CMP와 INNODB_CMP_RESET INNODB_CMP 및 INNODB_CMP_RESET 테이블은 압축 테이블 관련 작업에 대한 상태 정보를 제공합니다. PAGE_SIZE열은 압축된 페이지..
온라인 DDL 기능은 전체 테이블 변경 및 동시 DML을 지원합니다. 이 기능의 장점은 다음과 같습니다. + 몇 분 또는 몇 시간 동안 테이블을 사용할 수 없는 바쁜 생산 환경에서 응답 성과 가용성이 향상되었습니다. + LOCK 절을 사용하여 DDL 작업 중 성능과 동시성간의 균형을 조정하는 기능입니다. + 테이블 복사 방법보다 적은 디스크 공간 사용 및 I/O 오버 헤드를 가집니다. 일반적으로 온라인 DDL을 활성화하기 위해 특별한 작업을 수행 할 필요는 없습니다. 기본적으로 MySQL은 허용되는 한 적은 잠금으로 작업을 제 위치(in-place)에서 수행합니다. ALTER TABLE 문의 ALGORITHM 및 LOCK 절을 사용하여 DDL 조작의 측면을 제어 할 수 있습니다. 이 절은 명령문 끝에 테..
테이블의 행(Row) 형식에 따라 행이 실제로 저장되는 방식이 결정되어 쿼리 및 DML 작업의 성능에 영향을 줄 수 있습니다. 단일 디스크 페이지에 더 많은 행이 들어가므로 쿼리 및 인덱스 조회가 더 빠르게 작동 할 수 있으며 버퍼 풀에 필요한 캐시 메모리가 적고 업데이트 된 값을 기록하는 데 필요한 I/O가 적습니다. 각 테이블의 데이터는 페이지로 나뉩니다. 각 테이블을 구성하는 페이지는 B-트리 인덱스라고 하는 트리 데이터 구조로 정렬됩니다. 테이블 데이터와 보조 인덱스는 모두 이 유형의 구조를 사용합니다. 전체 테이블을 나타내는 B-트리 인덱스를 클러스터된 인덱스라고 하며 기본 키 열에 따라 구성됩니다. 클러스터형 인덱스 데이터 구조의 노드에는 행의 모든 열(Column) 값이 포함됩니다. 보조..
■ InnoDB Page Compression InnoDB는 테이블당 파일 테이블 스페이스에 있는 테이블에 대한 페이지 레벨 압축을 지원합니다. 이 기능을 무결성 혹은 명료한(Transparent) 페이지 압축이라고합니다. CREATE TABLE 또는 ALTER TABLE을 사용하여 COMPRESSION 속성을 지정하면 페이지 압축이 사용 가능합니다. 지원되는 압축 알고리즘에는 Zlib 및 LZ4가 있습니다. ▶ 지원되는 플랫폼 페이지 압축에는 스파스 파일 및 홀 펀치 지원이 필요합니다. 페이지 압축은 NTFS를 사용하는 Windows와 커널 수준에서 홀 펀치 지원을 제공하는 MySQL 지원 Linux 플랫폼의 다음 하위 집합에서 지원됩니다. 스파스 파일이란? : 홀 펀치란? : + RHEL 7 및 커널..
■ MariaDB VS MySQL 버전 비교 현재 MariaDB 버전은 는 5.5에서 10.5까지 다양하게 있습니다. 버전별로 비교하면 다음과 같습니다. MySQL MariaDB 5.5 5.5 5.6 10.1, 10.2 5.7 10.3,10.4 8.0 10.4, 10.5 제 개인적으로는 이렇게 보고 있습니다. 이젠 MySQL과 MariaDB는 노선이 완전히 다르기 때문에 버전 비교는 의미가 없는게 현실입니다. ■ MariaDB 사전 준비 YUM을 이용한 설치방법입니다. Repository를 구성해서 설치하는 방법을 설명합니다. 여기서는 10.3버전 설치를 해보는데 다른 버전도 설치 방법은 큰 차이가 없습니다. ▶︎ Yum Repository 설정 방법 먼저 MariaDB의 홈페이지에 접속합니다. http..
■ 압축 테이블 소개 프로세서와 캐시 메모리는 디스크 저장 장치보다 속도가 빨라지므로 많은 작업 부하가 디스크 바인딩됩니다. 데이터 압축을 통해 적은 CPU 사용 비용으로 데이터베이스 크기를 줄이고 I/O를 줄이며 처리량을 향상시킬 수 있습니다. 압축은 특히 자주 사용하는 데이터를 메모리에 유지하기에 충분한 RAM이있는 시스템에서 읽기 집약적인(select 쿼리의 범위가 많은) 응용 프로그램에 특히 유용합니다. ROW_FORMAT = COMPRESSED로 작성된 InnoDB 테이블은 구성된 innodb_page_size 값보다 디스크에서 더 작은 페이지 크기를 사용할 수 있습니다. 페이지가 작을수록 디스크에서 읽고 쓰는데 적은 I/O가 필요하며 특히 SSD 장치에 유용합니다. 압축된 페이지 크기는 CRE..
■ InnoDB에 대한 옵티마이저 통계 구성 이 섹션에서는 InnoDB 테이블에 대한 지속적 및 비 영구 옵티 마이저 통계를 구성하는 방법에 대해 설명합니다. + 지속적 옵티마이저 통계 매개 변수 구성 + 비 영구 옵티 마이저 통계 매개 변수 구성 + InnoDB 테이블에 대한 ANALYZE TABLE 복잡성 추정 지속적 옵티마이저 통계는 서버 재시작시에도 유지되므로 계획 안정성이 향상되고 보다 일관된 쿼리 성능이 보장됩니다. 영구 옵티마이저 통계는 다음과 같은 추가 이점으로 제어 및 유연성을 제공합니다. + innodb_stats_auto_recalc 구성 옵션을 사용하여 테이블이 크게 변경된 후 통계가 자동으로 업데이트되는지 여부를 제어 할 수 있습니다. + STATS_PERSISTENT, STATS..
■ 백그라운드 InnoDB I/O 스레드 수 구성 InnoDB는 백그라운드 스레드를 사용하여 다양한 유형의 I/O 요청을 처리합니다. innodb_read_io_threads(prefetcher) 및 innodb_write_io_threads(cleaner) 구성 매개 변수를 사용하여 데이터 페이지에서 I/O를 읽고 쓰는 서비스를 제공하는 백그라운드 스레드 수를 구성 할 수 있습니다. 이 매개 변수는 각각 읽기 및 쓰기 요청에 사용되는 백그라운드 스레드 수를 나타냅니다. 지원되는 모든 플랫폼에서 유효합니다. MySQL 옵션 파일 (my.cnf 또는 my.ini)에서 이러한 매개 변수의 값을 설정할 수 있습니다. 동적으로 값을 변경할 수 없습니다. 이 매개 변수의 기본값은 4이며 허용 가능한 값의 범위는 ..
InnoDB는 운영 체제 스레드를 사용하여 사용자 트랜잭션의 요청을 처리합니다.(트랜잭션은 커밋 또는 롤백하기 전에 InnoDB에 많은 요청을 발행 할 수 있습니다.) 컨텍스트 전환이 효율적인 멀티 코어 프로세서가 있는 최신 운영 체제 및 서버에서는 대부분의 워크로드가 동시 스레드 수에 제한없이 잘 실행됩니다. MySQL 5.5 이상의 확장성 향상은 InnoDB 내에서 동시에 실행되는 스레드 수를 제한 할 필요성을 줄입니다. 스레드간 컨텍스트 전환을 최소화하는 것이 도움이되는 상황에서 InnoDB는 여러 가지 기술을 사용하여 동시에 실행중인 운영 체제 스레드 수 (한 번에 처리되는 요청 수)를 제한 할 수 있습니다. InnoDB가 사용자 세션으로부터 새 요청을 수신 할 때 동시에 실행중인 스레드 수가 사..