2008년 12월 14일 일요일

MySQL기본구조 - 멀티스레드

MySQL서버는 처리를 복수의 스레드가 분담한다. 

*메인스레드 
*각 클라이언트에 대응하는 스레드
 하나의 클라이언트에 대해서 하나의 스레드를 갖는다.  현재는 SQL해석과 실행은 이 스레드 각각이 처리한다. 
*접속핸들(handle TCP/IP sockets)스레드
*시그널핸들러(interrupt)스레드
*shutdown스레드
 mysqld정지를 실행한다.  시그널핸들러에 의해 작성된다. 
*named pipe접속용 스레드
*shared memory접속용 스레드
*delayed스레드
 INSERT DELAYED에서 사용
*레플리케이션용 스레드
  마스터에서는 한개의 스레드(Binog dump스레드), 슬레이브에서는 두개의 스레드(I/O스레드, SQL스레드)가 생성된다. 
*InnoDB용 스레드
  I/O스레드(4개)
  watchmen스레드(2개)
 InnoDB마스터스레드
*bootstrap스레드
 권한 테이블의 초기작성시에 사용된다. 초기화를 끝내면 (정확히 표준입력에서 SQL문장 해석이 끝나면)종료된다.