Phân tích tối ưu hoá hiệu năng với dữ liệu bảng performance_schema

performance_schema trong MySQL là một “hệ thống đo nhịp tim” nội tại, ghi lại chi tiết các sự kiện, trạng thái, thời gian, khóa, bộ nhớ, I/O… của toàn bộ server.

Để hiểu và khai thác tốt, ta nên nắm rõ nhóm bảng — vì performance_schema có hơn 80 bảng, chia theo chức năng.


🧭 TỔNG QUAN: Các nhóm bảng trong performance_schema

Nhóm Chức năng chính Ví dụ bảng tiêu biểu
1. Setup Tables Cấu hình & bật/tắt theo dõi (config) setup_consumers, setup_instruments, setup_timers, setup_actors, setup_objects
2. Current Event Tables Trạng thái hiện tại của từng thread / session events_waits_current, events_stages_current, events_statements_current
3. History Tables Lịch sử ngắn hạn của sự kiện (buffered) events_waits_history, events_waits_history_long, events_statements_history
4. Summary Tables Tổng hợp thống kê theo nhiều tiêu chí (user, host, schema, event type, v.v.) events_statements_summary_by_user_by_event_name, events_waits_summary_global_by_event_name, table_io_waits_summary_by_table
5. Instance Tables Thông tin “đối tượng” (mutex, rwlock, file, socket…) đang được theo dõi mutex_instances, rwlock_instances, file_instances, socket_instances
6. Thread & Connection Tables Theo dõi các luồng, session, và tài nguyên gắn với user threads, events_waits_summary_by_thread_by_event_name
7. Memory Tables Theo dõi phân bổ bộ nhớ theo component hoặc event memory_summary_by_thread_by_event_name, memory_summary_global_by_event_name
8. Stage & Statement Tables Đo chi tiết thời gian từng giai đoạn / câu lệnh SQL events_stages_summary_by_account_by_event_name, events_statements_summary_by_digest
9. Metadata Lock Tables Theo dõi khóa metadata (DDL, ALTER TABLE…) metadata_locks
10. File I/O Tables Ghi nhận hoạt động đọc/ghi file file_summary_by_instance, file_summary_by_event_name
11. Mutex / Lock Wait Tables Thống kê thời gian chờ khóa nội bộ events_waits_summary_global_by_event_name, mutex_instances
12. Account / Host / User Summary Tables Tổng hợp hoạt động theo người dùng / host accounts, users, hosts, events_statements_summary_by_user_by_event_name
13. Replication Tables (MySQL 8+) Theo dõi luồng replication replication_applier_status_by_worker, replication_connection_status

🧩 Ví dụ thực tế: Phân tích hiệu năng truy vấn

Muốn xem truy vấn nào tốn nhiều CPU nhất:

SELECT DIGEST_TEXT, COUNT_STAR, SUM_TIMER_WAIT/1000000000 AS total_ms
FROM performance_schema.events_statements_summary_by_digest
ORDER BY total_ms DESC
LIMIT 10;

Muốn xem I/O theo bảng:

SELECT OBJECT_SCHEMA, OBJECT_NAME, COUNT_READ, COUNT_WRITE
FROM performance_schema.table_io_waits_summary_by_table
ORDER BY COUNT_READ DESC
LIMIT 10;

⚙️ Lưu ý cấu hình

Trước khi khai thác, đảm bảo bạn đã bật performance_schema trong my.ini:

performance_schema = ON

Và nếu cần bật thêm các công cụ:

UPDATE performance_schema.setup_consumers
SET ENABLED = 'YES'
WHERE NAME LIKE '%events_statements%';

📚 Mẹo học nhanh:

Nếu muốn tự khám phá toàn bộ bảng và nhóm:

SELECT TABLE_NAME, TABLE_COMMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'performance_schema';

Hoặc lọc nhanh theo từ khóa:

SHOW TABLES FROM performance_schema LIKE '%memory%';

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *