MYSQL. Performance_schema, Sys

jys9962·2022년 3월 5일
0

MySQL8

목록 보기
6/8

Real Mysql 8.0 참고

모든엔진은 performance_schema 엔진 사용
디스크에 테이블의 구조만 저정하며 모든 데이터 메모리에 저장함
바이너리 로그에 기록되지 않아서 레플리카 서버로 복제되지 않음

사용설정

performance_schema=ON

데이터 수집 및 저장 설정

setup_actors

수집할 유저(host, user) 설정

setup_objects

수집할 스키마, 테이블, 트리거 설정

setup_consumers

이벤트 종류별 설정

setup_threads

수집할 스레드 설정

setup_instruments

이벤트 타입

Connection 관련

accounts : 유저(user,host)별 커넥션
host: host별 커넥션
user: user별 커넥션

Variable 관련

global_variables : show variable 동일
global_status : show status 동일
variables_by_thread : 스레드별 변수
persisted_variables : set persist로 수정한 변수
variables_info : 변수의 마지막 수정일, 수정한 유저 호스트
user_variables_by_thread: 현재 연결된 세선들에서 생성한 사용자 정의 변수
session_status : 현재 세션에 대한 세션 범위의 상태변수
status_by_thread : 스레드별 상태변수

Event 관련

Transaction > Statement > Stage > Wait

Transaction: 트랜잭션에 대한 정보
Statement: 실행한 쿼리들의 정보
Stage: 쿼리들의 처리단계에 대한 정보
Wait: 대기하고 있는 이벤트들의 정보

이벤트별 테이블

current : 가장 최신 1건
history : 스레드별로 가장 최신 이벤트가 정해진 갯수만큼
history_long: 전체 스레드에 대한 최근 이벤트

show VARIABLES like ''%performance_schema_events_%_size%'';

LOCK

data_locks: 현재 잠금 중인 정보
data_lock_waits: 잠금으로 대기중인 정보
metadata_locks : get_lock()으로 잠근 정보
table_handles : 테이블 락 정보

Clone

clone_status: 현재 또는 마지막으로 실행된 클론 작업에 대한 상태 정보
clone_progress: 현재 또는 마지막으로 실행된 클론 작업에 대한 진행 정보

ETC

error_log: 에러 로그 파일 내용
host_cache: 호스트 캐시 정보
performance_schemas: performance_schema에서 사용 가능한 이벤트 타임들과 그 특성에 대한 정보
prosesslist: show processlist;
thread: MYSQL 백그라운드 스레드 및 클라이언트 연결에 대한 포그라운드 스레드에 대한 정보
모네터링 및 과거 이벤트 데이터 보관 설정 여부 확인
tls_channel_status: MYSQL 연결 인터페이스별 TLS 속성 정보

사용 예

호스트 접속 이력

SELECT *
FROM performance_schema.hosts;

총 사용중인 메모리

SELECT *
FROM sys.memory_global_total;

스레드별 메모리

SELECT *
FROM sys.memory_by_thread_by_current_bytes;

미사용 인덱스

SELECT *
FROM sys.schema_unused_indexes;

중복 인덱스

SELECT * FROM sys.schema_redundant_indexes;

테이블별 작업량

SELECT * FROM sys.schema_table_statistics;

풀테이블 스캔 쿼리

SELECT * FROM sys.x$statements_with_full_table_scans;

자주 실행되는 쿼리

SELECT * FROM sys.statement_analysis order by exec_count desc;

실행시간 긴 쿼리

SELECT * FROM sys.x$statement_analysis order by avg_latency desc;

정렬 작업을 수행한 쿼리

SELECT * FROM sys.x$statements_with_sorting;

임시 테이블 생성한 쿼리

SELECT * FROM sys.x$statements_with_temp_tables;

alter 진행률 확인

SELECT *
FROM performance_schema.events_stages_current ps_estc
INNER JOIN performance_schema.events_statements_current ps_esmc
ON ps_estc.NESTING_EVENT_ID = ps_esmc.EVENT_ID
WHERE ps_estc.EVENT_NAME LIKE 'stage/innodb/alter%'

락 확인

SELECT * FROM sys.x$innodb_lock_waits;

0개의 댓글