성능 보고서 생성(AWR / ASH 및 대응 기능)
Oracle
-- AWR report (SQL*Plus):
@?/rdbms/admin/awrrpt.sql
-- ASH report: @?/rdbms/admin/ashrpt.sql
-- Live: SELECT * FROM v$active_session_history WHERE sample_time > SYSDATE-1/24;AWR/ASH는 Diagnostics Pack 라이선스가 필요하다. 라이선스가 필요 없는 대안은 Statspack이다.
PostgreSQL
-- pg_stat_statements summary + pg_profile/pgBadger:
SELECT queryid, calls, total_exec_time, mean_exec_time, query
FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20;AWR에 해당하는 기능으로는 pg_profile 확장(주기적 스냅샷)이나 pgBadger 로그 분석을 사용한다.
MySQL
-- sys schema summaries:
SELECT * FROM sys.statement_analysis LIMIT 20;
SELECT * FROM sys.io_global_by_file_by_bytes LIMIT 10;sys 스키마는 performance_schema를 읽기 쉬운 보고서로 만든다. Enterprise Monitor가 더 포괄적이다.
SQL Server
-- Query Store reports (SSMS) or:
SELECT TOP 20 * FROM sys.query_store_runtime_stats ORDER BY avg_duration DESC;Query Store는 시간에 따른 실행 계획/성능을 보관한다. sp_BlitzFirst(커뮤니티)는 빠른 진단을 제공한다.
MongoDB
# Live from the shell: mongostat --rowcount 10 ; mongotop
// or Atlas Performance Advisor / profiler:
db.system.profile.find().sort({millis:-1}).limit(20)mongostat/mongotop은 순간 부하를 보여 주고, 프로파일러는 느린 작업을 기록한다.
Redis
INFO stats
redis-cli --latency-history
SLOWLOG GET 20--latency와 --latency-history는 지연 프로파일을, INFO는 모든 카운터를 보여 준다.
Elasticsearch
GET _nodes/stats
GET _cat/thread_pool?v&h=node_name,name,active,queue,rejected
GET _nodes/hot_threadshot_threads는 비용이 가장 큰 스레드를, _nodes/stats는 종합 지표를 보여 준다. 모니터링(Kibana)은 이력 기반이다.