다른 DBMS/MySQL&MariaDB51 InnoDB Redo Log ▶Redo Log? 리두 로그는 crash recovery 중 불완전한 트랜잭션에 의해 변경된 데이터를 수정하기 위해 사용되는디스크 기반 데이터 구조입니다. default로 리두 로그는 ib_logfile0,ib_logfile1로 이름된 두개의 파일이 물리적으로 존재합니다. $ ls -alh ib_logfile* -rw-r-----. 1 mysql mysql 48M Jan 12 02:49 ib_logfile0 -rw-r-----. 1 mysql mysql 48M Dec 14 02:19 ib_logfile1 MySQL은 순환방식으로 리두 로그 파일을 씁니다. 리두 로그는 계속 증가하는 LSN값으로 표시됩니다.(순환로그이기 때문에 다시 순환될때 데이터가 덮어쓰여져 기존에 데이터가 없어지게 됩니다.) - Re.. 2021. 1. 15. InnoDB Doublewrite Buffer ▶ doublewrite buffer란? InnoDB의 데이터 파일에 쓰기 전에 버퍼 풀로부터 flush된 페이지를 쓰는 저장영역입니다. 만약, 페이지 쓰기 도중 갑작스런 mysqld 프로세스의 정지나 OS 이슈 등일때 Crash Recovery 를 시도하고 InnoDB는 doublewrite buffer로부터 페이지의 복사본을 찾아 복구를 수행할 수 있습니다. 비록 데이터는 doublewrite buffer에 두번 쓰여지지만, I/O 오버헤드나 I/O작업이 두배나 필요하지는 않습니다. 데이터는 doublewrite buffer에 OS에서 단일 fsync()라고 불리는 기능으로 큰 덩어리(large chunk) 순서로 쓰여집니다. (innodb_flush_method가 O_DIRECT_NO_FSYNC로 .. 2021. 1. 14. InnoDB On-Disk Structures ▶Tablespace ▶ System Tablespace Change buffer를 위한 저장영역입니다. 데이터가 일반 테이블스페이스나 file-per-table 이 아닌 System tablespace에서 생성되고 관리되는 경우 테이블 및 인덱스 데이터도 포함될 수 있습니다. 이전버전(8.0 이전버전)에는 InnoDB의 Data dictionary 정보도 저장하고 있었습니다. Mysql 8.0버전 부터 InnoDB는 Data dictionary의 Metadata를 저장합니다. 이전버전에는 doublewrite buffer 저장영역도 system tablespace에 포함하고 있었습니다. 8.0.20버전 부터 별도의 doublewrite 파일 영역이 생겨서 그곳에서 관리됩니다. System Tablesp.. 2021. 1. 13. InnoDB IN-MEMORY Structures Mysql의 InnoDB는 In-Memory 구조와 On-Disk 구조로 이루어져 있습니다. In-Memory 구조 ▶ Buffer Pool InnoDB가 액세스할 때 테이블 과 인덱스 데이터를 캐시하는 메인 메모리영역입니다. 해당 영역은 메모리로부터 데이터를 직접 처리할 수 있게하여 처리속도를 향상시킵니다. dedicated server의 경우, 물리 메모리의 최대 80%까지 버퍼풀이 할당됩니다. 효과적으로 읽기 작업을 하기 위해서 버퍼 풀은 여러 행을 보유할 수 있는 페이지들로 나눠집니다. 효과적으로 캐시 관리를 하기위해 버퍼 풀은 링크된 페이지들의 목록으로 구현됩니다. LRU알고리즘으로 관리되어 자주 사용하지 않는 데이터는 age out(삭제) 됩니다. - LRU 알고리즘 버퍼 풀은 LRU(leat.. 2021. 1. 12. 이전 1 ··· 4 5 6 7 8 9 10 ··· 13 다음