into MySQL
MySQL, InnoDB, MyISAM
레이블이
Background thread
인 게시물을 표시합니다.
모든 게시물 표시
레이블이
Background thread
인 게시물을 표시합니다.
모든 게시물 표시
2010년 12월 26일 일요일
Insert buffer merge thread
Insert Buffer의 내용을 Disk의 페이지로 Merge하는 Background Thread
InnoDB Buffer Pool의 Insert Buffer를 Disk의 각 인덱스 페이지로 병합
이러한 병합 작업을 위해서는 해당 Index Page를 InnoDB Buffer Pool로 읽어들여야 하므로, 추가적인 Read작업도 수행하게 됨
Random I/O
2010년 12월 25일 토요일
InnoDB Main thread
InnoDB의 Main thread는
Background Thread들의 관리 및 아래 작업들의 스케쥴링
Data page Flush
Undo log purge
Checkpoint
Insert Buffer merge
디스크로부터 읽기 작업을 전담하는 Background Thread
InnoDB의 4개의 IO Thread중 하나로, Background 읽기 작업 수행
Background 읽기이므로 Read Ahead를 위한 읽기 작업임
실질적으로 그때 그때 필요한 디스크의 페이지는 Read thread 가 아닌 Client thread (Connection)에서 Foreground로 실행한다.
Redo log의 디스크 기록을 전담하는 Background Thread
Log Buffer의 내용을 디스크로 기록(flush)
Log 의 Disk write는 동기화 작업일수도 있고, 비동기화된 작업일 수도 있음
-> innodb_flush_log_at_trx_commit 설정값에 따라 달라짐
-> 0 : Foreground에서 Flush를 실행하지 않음 (Background로 초당 1회씩 Flush가 실행됨)
-> 1 : 트랜잭션이 Commit될 때마다 Log file을 sync시킴
-> 2 : O/S 캐시까지는 Flush를 실행하지만, Log file을 sync시키지는 않음 (O/S가 죽지 않으면 로그 손상 없음)
Sequential I/O를 수행함
디스크로 쓰기 작업을 전담하는 Background Thread
윈도우즈에서 실행되는 MySQL은 여러개의 Write thread가 기동되지만, Linux용은 1개의 Write thread만 실행됨
InnoDB Buffer Pool의 더티 페이지를 디스크로 기록하는 일을 전담
데이터의 Disk write는 대부분 Background job이며, 비동기화된 작업임
Free buffer가 없으면 동기화된 Flush (Disk write)도 발생함
Random I/O
이전 게시물
홈
피드 구독하기:
글 (Atom)