十三,MySQL系统数据库
information_schema
- 作用:提供对数据库元数据的访问,如数据库、表、列、索引等信息。
- 特点:
- 只读视图:所有数据通过虚拟表(视图)呈现,不可直接修改。
- 跨引擎兼容:支持InnoDB、MyISAM等多种存储引擎的元数据查询。
- 常用场景:
- 查询所有数据库或表的结构:
SELECT * FROM information_schema.tables;
- 查看列信息:
SELECT * FROM information_schema.columns WHERE table_name='users';
- 注意:
- 数据动态生成,不占用物理存储空间。
- 适用于需要动态获取数据库结构的工具(如ORM框架)。
mysql
- 作用:存储用户账户、权限、存储过程、事件等核心配置信息。
- 关键表:
user:用户账户及全局权限。
db:数据库级权限。
tables_priv:表级权限。
procs_priv:存储过程和函数权限。
event:定时任务(事件)定义。
- 常用场景:
- 管理用户权限:
GRANT SELECT ON db.* TO 'user'@'localhost';
- 查看用户列表:
SELECT user, host FROM mysql.user;
- 注意:
- 禁止直接修改表:应使用
GRANT/REVOKE语句管理权限,避免数据不一致。
- 密码存储在
authentication_string列(MySQL 5.7+)。
performance_schema
- 作用:收集数据库服务器的性能数据,用于监控和调优。
- 核心功能:
- 资源监控:跟踪线程、锁、内存、文件I/O等资源使用。
- 事件统计:记录SQL执行耗时、错误日志等。
- 常用表:
events_statements_summary_by_digest:SQL语句性能摘要。
file_summary_by_event_name:文件I/O统计。
mutex_instances:锁竞争情况。
- 注意:
- 默认部分功能关闭,需通过配置文件启用:
performance_schema=ON
- 数据量庞大,需针对性查询以避免性能影响。
sys
- 作用:基于
information_schema和performance_schema的高级性能分析工具。
- 特点:
- 简化视图:提供易读的预定义视图(如
sys.schema_table_lock_waits)。
- 存储过程:内置诊断工具(如
sys.ps_trace_thread())。
- 常用场景:
- 快速定位性能瓶颈:
SELECT * FROM sys.schema_table_lock_waits;
- 分析内存使用:
SELECT * FROM sys.memory_global_by_current_bytes;
- 注意:
- MySQL 5.7+ 版本默认安装,需手动初始化(执行
sys_56.sql)。
- 适合DBA和开发者快速诊断问题,无需编写复杂SQL。
其他系统数据库
ndbinfo(仅NDB集群):
- 专为MySQL NDB Cluster设计,存储集群节点、状态等信息。
sys_aux(辅助存储):
- 某些工具(如Enterprise Monitor)可能创建此库存储扩展数据。
注意事项
- 禁止直接修改:系统表结构复杂,直接修改可能导致数据损坏或服务崩溃。
- 备份与恢复:
- 使用
mysqldump备份时默认包含系统数据库。
- 恢复
mysql库需谨慎,避免权限丢失。
- 版本差异:
sys库在MySQL 5.7+才默认存在。
performance_schema在MySQL 5.5+引入,功能逐步增强。