作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
Redis
Etcd
上个小节介绍了MYSQL的系统库表(information_schema),本小节来介绍另外一个库表:performance_schema,他是MySQL内置的性能监控引擎,以事件方式采集数据库内部执行的详细运行时数据,用于深度性能分析和故障诊断。
mysql> show tables;
+------------------------------------------------------+
| Tables_in_performance_schema |
+------------------------------------------------------+
| accounts |
| cond_instances |
| events_stages_current |
| events_stages_history |
| events_stages_history_long |
| events_stages_summary_by_account_by_event_name |
| events_stages_summary_by_host_by_event_name |
| events_stages_summary_by_thread_by_event_name |
| events_stages_summary_by_user_by_event_name |
| events_stages_summary_global_by_event_name |
| events_statements_current |
| events_statements_history |
| events_statements_history_long |
| events_statements_summary_by_account_by_event_name |
| events_statements_summary_by_digest |
| events_statements_summary_by_host_by_event_name |
| events_statements_summary_by_program |
| events_statements_summary_by_thread_by_event_name |
| events_statements_summary_by_user_by_event_name |
| events_statements_summary_global_by_event_name |
| events_transactions_current |
| events_transactions_history |
| events_transactions_history_long |
| events_transactions_summary_by_account_by_event_name |
| events_transactions_summary_by_host_by_event_name |
| events_transactions_summary_by_thread_by_event_name |
| events_transactions_summary_by_user_by_event_name |
| events_transactions_summary_global_by_event_name |
| events_waits_current |
| events_waits_history |
| events_waits_history_long |
| events_waits_summary_by_account_by_event_name |
| events_waits_summary_by_host_by_event_name |
| events_waits_summary_by_instance |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_by_user_by_event_name |
| events_waits_summary_global_by_event_name |
| file_instances |
| file_summary_by_event_name |
| file_summary_by_instance |
| global_status |
| global_variables |
| host_cache |
| hosts |
| memory_summary_by_account_by_event_name |
| memory_summary_by_host_by_event_name |
| memory_summary_by_thread_by_event_name |
| memory_summary_by_user_by_event_name |
| memory_summary_global_by_event_name |
| metadata_locks |
| mutex_instances |
| objects_summary_global_by_type |
| performance_timers |
| prepared_statements_instances |
| processlist |
| replication_applier_configuration |
| replication_applier_status |
| replication_applier_status_by_coordinator |
| replication_applier_status_by_worker |
| replication_connection_configuration |
| replication_connection_status |
| replication_group_member_stats |
| replication_group_members |
| rwlock_instances |
| session_account_connect_attrs |
| session_connect_attrs |
| session_status |
| session_variables |
| setup_actors |
| setup_consumers |
| setup_instruments |
| setup_objects |
| setup_timers |
| socket_instances |
| socket_summary_by_event_name |
| socket_summary_by_instance |
| status_by_account |
| status_by_host |
| status_by_thread |
| status_by_user |
| table_handles |
| table_io_waits_summary_by_index_usage |
| table_io_waits_summary_by_table |
| table_lock_waits_summary_by_table |
| threads |
| user_variables_by_thread |
| users |
| variables_by_thread |
+------------------------------------------------------+
88 rows in set (0.00 sec)setup_instruments - 监控仪器配置,控制采集哪些事件 setup_consumers - 消费者配置,控制事件数据存储到哪里 setup_timers - 计时器配置,不同事件类型的计时单位 setup_actors - 用户连接匹配规则,控制哪些用户被监控 setup_objects - 对象过滤规则,控制哪些数据库对象被监控
events_statements_current - 当前正在执行的SQL语句 events_statements_history - 每个线程最近执行的历史SQL(循环缓冲) events_statements_history_long - 全局最近执行的所有SQL(循环缓冲) events_statements_summary_by_digest - SQL语句摘要统计(按指纹分组) events_statements_summary_global_by_event_name - 按事件类型聚合的语句统计 events_statements_summary_by_account_by_event_name - 按账号聚合的语句统计 events_statements_summary_by_user_by_event_name - 按用户聚合的语句统计 events_statements_summary_by_host_by_event_name - 按主机聚合的语句统计 events_statements_summary_by_thread_by_event_name - 按线程聚合的语句统计
注:可以通过这里分析出目前库表的sql执行情况。
events_stages_current - 当前执行阶段 events_stages_history - 历史阶段信息 events_stages_history_long - 长期阶段信息 events_stages_summary_global_by_event_name - 阶段全局统计 events_stages_summary_by_account_by_event_name - 按账号的阶段统计 events_stages_summary_by_user_by_event_name - 按用户的阶段统计 events_stages_summary_by_host_by_event_name - 按主机的阶段统计 events_stages_summary_by_thread_by_event_name - 按线程的阶段统计
events_waits_current - 当前等待事件 events_waits_history - 历史等待事件 events_waits_history_long - 长期等待事件 events_waits_summary_global_by_event_name - 等待事件全局统计 events_waits_summary_by_instance - 按实例的等待统计 events_waits_summary_by_account_by_event_name - 按账号的等待统计 events_waits_summary_by_user_by_event_name - 按用户的等待统计 events_waits_summary_by_host_by_event_name - 按主机的等待统计 events_waits_summary_by_thread_by_event_name - 按线程的等待统计
events_transactions_current - 当前事务 events_transactions_history - 历史事务 events_transactions_history_long - 长期事务历史 events_transactions_summary_global_by_event_name - 事务全局统计 events_transactions_summary_by_account_by_event_name - 按账号的事务统计 events_transactions_summary_by_user_by_event_name - 按用户的事务统计 events_transactions_summary_by_host_by_event_name - 按主机的事务统计 events_transactions_summary_by_thread_by_event_name - 按线程的事务统计
file_instances - 打开的文件实例 file_summary_by_event_name - 按事件类型的文件I/O统计 file_summary_by_instance - 按文件实例的I/O统计
memory_summary_global_by_event_name - 内存使用全局统计 memory_summary_by_account_by_event_name - 按账号的内存统计 memory_summary_by_user_by_event_name - 按用户的内存统计 memory_summary_by_host_by_event_name - 按主机的内存统计 memory_summary_by_thread_by_event_name - 按线程的内存统计
metadata_locks - 元数据锁信息 table_handles - 表锁句柄信息 table_io_waits_summary_by_table - 表I/O等待统计 table_io_waits_summary_by_index_usage - 索引使用和等待统计 table_lock_waits_summary_by_table - 表锁等待统计
threads - 线程信息(增强版processlist),其实我个人用的最多的是
mysql> show processlist;
+----+------+-----------+--------------------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+--------------------+---------+------+----------+------------------+
| 2 | root | localhost | performance_schema | Query | 0 | starting | show processlist |
+----+------+-----------+--------------------+---------+------+----------+------------------+
1 row in set (0.00 sec)accounts - 账号连接统计 users - 用户连接统计 hosts - 主机连接统计 session_connect_attrs - 会话连接属性 session_account_connect_attrs - 当前账号连接属性
cond_instances - 条件变量实例 mutex_instances - 互斥锁实例 rwlock_instances - 读写锁实例 socket_instances - Socket实例 socket_summary_by_instance - Socket实例统计 socket_summary_by_event_name - Socket事件统计
replication_connection_configuration - 复制连接配置 replication_connection_status - 复制连接状态 replication_applier_configuration - 复制应用配置 replication_applier_status - 复制应用状态 replication_applier_status_by_coordinator - 协调器状态 replication_applier_status_by_worker - 工作线程状态 replication_group_members - 组复制成员 replication_group_member_stats - 组复制成员统计
global_variables - 全局变量(云数据库都会提供一个可修改的配置文件,都来自于它),上个库其实也有这个表。 session_variables - 会话变量 global_status - 全局状态 session_status - 会话状态 variables_by_thread - 线程变量 status_by_account - 账号状态 status_by_user - 用户状态 status_by_host - 主机状态 status_by_thread - 线程状态
host_cache - 主机缓存信息 prepared_statements_instances - 预处理语句实例 performance_timers - 性能计时器 objects_summary_global_by_type - 对象类型统计 user_variables_by_thread - 用户变量 processlist - 增强的进程列表
这种分类清晰地展示了 performance_schema 作为MySQL性能诊断工具的核心架构,从事件采集到聚合统计的完整监控体系。
查看和设置某个变量也是最常用的配置。
#查看所有变量
SHOW VARIABLES;
#搜索命令,太多根本记不住
SHOW VARIABLES LIKE '%xxx%';
#修改变量
SET GLOBAL 变量名 = 值;