performance_schema는 정보를 수집하는 instruments와 수집한 정보를 저장하는 consumers를 설정하여 이용하는 구조입니다.
구체적으로 말씀드리면 performance_schema 데이터베이스에 있는 setup_instruments, setup_objects, setup_consumers, threads, setup_actors, setup_timers 테이블에서 대응하는 레코드를 설정(활성화와 수집 방법 지정)합니다.
Instrument
- 인스트루먼트는 정보를 얻고자 하는 MySQL 코드의 어떤 부분을 나타냅니다.
- 예를 들어 메타 데이터 잠금에 대한 정보를 수집하려면 wait/lock/metadata/sql/md1 인스트루먼트를 활성화 해야 합니다.
- 모든 인스트루먼트 명은 슬래시로 구분해서 구성됩니다.
- statement/sql/select - select쿼리
- wait/synch/mutex/innodb/autoinc_mutex - wait는 대기임을 나타냄, Innodb가 auto-increment열에 설정하는 뮤텍스

Consumer
어떤 코드가 수행되었는지에 대한 정보를 저장하는 단순한 테이블을 컨슈머라고 합니다. 쿼리를 수행하면 컨슈머는 총 실행 횟수, 인덱스가 사용되지 않은 횟수, 수행 시간 등과 같은 정보를 기록합니다.
Performance 스키마 구성
- Setup 테이블
- setup 테이블에는 Performance 스키마의 데이터 수집 및 저장과 관련된 설정 정보가 저장돼 있으며, 사용자는 이 테이블을 통해 Performance 스키마의 설정을 동적으로 변경 할 수 있다.
- Instance 테이블
- Instance 테이블들은 Performance 스키마가 데이터를 수집하는 대상인 실체화된 객체들, 즉 인스턴스들에 대한 정보를 제공하며, 인스턴스 종류별로 테이블이 구분돼 있다.
- Connection 테이블
- Connection 테이블들은 MySQL에서 생성된 커넥션들에 대한 통계 및 속성 정보를 제공한다.
- Variable 테이블
- Variable 테이블들은 MySQL 서버의 시스템 변수 및 사용자 정의 변수와 상태 변수들에 대한 정보를 제공한다.