CREATE TABLE test_table (fd1 INT, fd2 INT) ENGINE=InnoDB;
SHOW GLOBAL STATUS LIKE 'Handler%'; 명령어로 확인해볼 수 있다.
| Variable_name | Value |
| -------------------------- | --------- |
| Handler_commit | 52788536 |
| Handler_delete | 1279 |
| Handler_discover | 0 |
| Handler_external_lock | 47244223 |
| Handler_mrr_init | 0 |
| Handler_prepare | 42530716 |
| Handler_read_first | 2641564 |
| Handler_read_key | 23349322 |
| Handler_read_last | 5 |
| Handler_read_next | 7360721 |
| Handler_read_prev | 2503 |
| Handler_read_rnd | 855 |
| Handler_read_rnd_next | 388011957 |
| Handler_rollback | 418 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 10972053 |
| Handler_write | 191353285 |
각 클라이언트 사용자가 요청하는 쿼리 문장을 처리한다.
클라이언트 사용자가 작업을 마치고 커넥션을 종료하면 해당 커넥션을 담당하던 스레드는 다시 스레드 캐시(Thread Cache)로 돌아간다.
이떄 스레드 캐시에 유지할 수 있는 최대 스레드 개수는 thread_cache_size 시스템 변수로 설정한다.
(내 생각) Thread Pool과 Thread Cache가 다른건 뭐지?
Thread Cache - 종료된 스레드를 버리지 않고 보관했다가 재사용 - 스레드를 덜 만들 뿐, 많이 쓰는 건 그대로다.
Connection 종료
→ Thread 종료 ❌
→ Thread Cache에 보관
새 Connection
→ Thread 생성 ❌
→ Cache에서 재사용
Thread Pool
Connection 1,000개
↓
Request Queue
↓
Worker Thread 32개
정리, Thread Cache는 Thread-per-Connection 모델을 유지한 채
스레드 생성 비용을 줄이는 기능이다.
Thread Pool은 커넥션과 스레드를 분리해서
서버의 동시성을 제어하는 아키텍처적인 변화이다.