티스토리 뷰

MariaDB

MariaDB InnoDB Status

자바바라 2025. 1. 30. 23:45

MariaDB의 `SHOW ENGINE INNODB STATUS` 명령은 InnoDB 스토리지 엔진의 내부 상태를 상세하게 보여준다. 이 출력은 여러 섹션으로 구성되며, 각 섹션은 InnoDB의 성능, 트랜잭션, 잠금, 메모리 사용량 등을 진단하는 데 사용된다.

---

 0. HEADER
- Timestamp: 상태 정보가 생성된 시간.
- Monitor name: `InnoDB Monitor`로 고정된 값.
- 주의 사항: 일부 숫자는 누적값이므로 시간 경과에 따른 변화를 관찰해야 한다.

---

 1. BACKGROUND THREAD (백그라운드 스레드)
- Main thread: InnoDB의 메인 스레드로, 버퍼 풀의 더티 페이지(Dirty Page)를 디스크에 플러시하거나 체크포인트 생성.
  - `srv_master_thread loops`: 메인 스레드가 실행된 횟수.
  - `background log/flush thread activity`: 로그 및 플러시 작업 상태.
  - `pending` 작업: 대기 중인 I/O 작업 수.

---

 2. SEMAPHORES (세마포어)
- OS WAIT ARRAY INFO: 스레드 대기 정보.
  - `OS WAIT ARRAY: reserved slots`: 예약된 대기 슬롯 수.
  - `Mutex spin/wait`: 뮤텍스 경합 시 스핀 대기 횟수.
  - `RW-shared spins`, `RW-excl spins`: 읽기/쓰기 잠금 경합 정보.
- High contention 경고: 세마포어 경합이 심한 경우 성능 저하 원인

---

 3. LATEST DETECTED DEADLOCK (최근 발생한 데드락)
- 데드락이 발생한 트랜잭션과 관련된 상세 정보:
  - `* (1) TRANSACTION`: 첫 번째 트랜잭션의 ID, 실행 중인 쿼리, 대기 중인 잠금.
  - `* (2) TRANSACTION`: 두 번째 트랜잭션 정보.
  - `* WE ROLL BACK TRANSACTION (1/2)`: 어떤 트랜잭션이 롤백되었는지 표시..

---

 4. TRANSACTIONS (트랜잭션)
- 활성 트랜잭션 목록:
  - `Trx id counter`: 다음 트랜잭션 ID.
  - `Purge done for trx's n:o <...>`: 완료된 트랜잭션 중 정리(Purge)된 것.
  - `History list length`: 정리되지 않은 트랜잭션 수 (과도하면 성능 문제 가능성).
- 트랜잭션 상태:
  - `ACTIVE`: 실행 중인 트랜잭션.
  - `LOCK WAIT`: 잠금 대기 중인 트랜잭션.

---

 5. FILE I/O (파일 입출력)
- I/O 스레드 상태:
  - `Pending normal aio reads/writes`: 대기 중인 비동기 읽기/쓰기 작업 수.
  - `ibuf aio reads`: Insert Buffer 관련 읽기 작업.
  - `log i/o's`: 로그 파일 쓰기 작업.
  - `sync i/o's`: 동기화된 I/O 작업.
  - `Pending operations`: 대기 중인 I/O 작업 수 (높을 경우 디스크 병목 가능성).

---

 6. INSERT BUFFER AND ADAPTIVE HASH INDEX (삽입 버퍼 및 어댑티브 해시 인덱스)
- Insert Buffer:
  - `Ibuf: size`: Insert Buffer의 크기.
  - `merged operations`: 병합된 삽입/삭제/업데이트 횟수.
- Adaptive Hash Index (AHI):
  - `Hash table size`: 해시 테이블 크기.
  - `Adaptive hash index cells`: 사용 중인 해시 셀 수.

---

 7. LOG (로그)
- Redo Log 상태:
  - `Log sequence number`: 현재까지 생성된 로그 시퀀스 번호 (LSN).
  - `Log flushed up to`: 디스크에 기록된 LSN.
  - `Last checkpoint at`: 마지막 체크포인트 LSN.
- 로그 버퍼 및 플러시:
  - `Pending log writes/flushes`: 대기 중인 로그 쓰기/플러시 작업.

---

 8. BUFFER POOL AND MEMORY (버퍼 풀 및 메모리)
- 버퍼 풀 사용량:
  - `Buffer pool size`: 할당된 메모리 페이지 수.
  - `Free buffers`: 사용 가능한 페이지 수.
  - `Database pages`: 데이터베이스 페이지 수.
  - `Dirty pages`: 아직 디스크에 쓰이지 않은 더티 페이지 수.
- 성능 지표:
  - `Buffer pool hit rate`: 버퍼 풀 적중률 (99% 이상이 이상적).

---

 9. ROW OPERATIONS (행 작업)
- 쿼리 처리 상태:
  - `Number of rows inserted/updated/deleted/read`: 행 작업 통계.
  - `Queries inside InnoDB`: InnoDB 내부에서 실행 중인 쿼리 수.
  - `Main thread process no.`: 메인 스레드의 프로세스 ID. (예: `executing SQL`).

---

 11. HISTORY LIST
- Purge 작업 대기 현황:
  - `History list length`: 정리되지 않은 언두 로그 항목 수.
  - 주의: 높은 값은 `purge thread` 병목 또는 장기 트랜잭션 존재 가능성.

---

 12. FOREIGN KEY ERRORS (오류 발생 시 표시)
- 외래 키 위반 사항:
  - 실패한 쿼리 및 위반된 제약 조건 상세 정보.

---

요약
- 성능 튜닝: `SEMAPHORES` (잠금 경합), `BUFFER POOL` (메모리 효율), `LOG` (I/O 병목) 분석.

- 세마포어 경합이 많다면 동시성 설정(`innodb_thread_concurrency`) 조정
- 문제 진단: `LATEST DETECTED DEADLOCK` (교착 상태), `TRANSACTIONS` (장기 실행 트랜잭션) 확인.
- 모니터링: 주기적 상태 확인으로 잠재적 이슈 사전 감지.
- FILE I/O: 섹션의 대기 작업 수가 많다면 디스크 성능 검토

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함