系统数据库
这些是 MySQL 安装后自动创建的系统数据库
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
1. information_schema
- 角色:元数据数据库(信息数据库)。
- 作用:它提供了访问数据库元数据的途径。元数据就是“关于数据的数据”,例如:数据库名、表名、列的数据类型、访问权限等。
- 特点:这是一个虚拟的数据库,它并不是磁盘上真实存在的文件,而是MySQL服务器在内存中构建的视图。你无法修改其中的数据。
- 常用操作:查询有哪些表、哪些列等。
-- 查看所有数据库中的表 SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES;-- 查看某张表的列信息 SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'your_table_name';
2. mysql
- 角色:核心系统数据库。
- 作用:存储MySQL服务器运行所需的核心信息,主要包括:
- 用户账户和权限信息(
user
,db
,host
表) - 存储过程、事件、触发器等的定义
- 时区信息
- 日志配置信息
- 用户账户和权限信息(
- 特点:这是MySQL的“大脑”和“安全中心”。不要随意修改这个数据库中的表,除非你非常清楚你在做什么(比如,使用专门的用户管理命令如
CREATE USER
,GRANT
等)。
3. performance_schema
- 角色:性能监控数据库。
- 作用:用于监控MySQL服务器运行过程中的性能和资源消耗情况。它收集的是服务器内部的、低级别的运行指标,例如:哪些SQL语句执行得最多、哪些线程在等待锁、内存使用情况等。
- 特点:这个数据库的数据主要供数据库管理员(DBA) 和开发者进行性能分析和故障排查。默认可能不是所有功能都开启,可以通过配置来启动更多的监控项。
4. sys
- 角色:
performance_schema
的“人类可读”视图。 - 作用:它通过一系列视图(Views)、函数(Functions) 和存储过程(Procedures),将
performance_schema
中复杂难懂的性能数据以非常直观和容易理解的方式展现出来。 - 特点:对于初学者和日常运维来说,
sys
库比直接查询performance_schema
要友好得多。-- 一个经典的查询:查看哪些SQL语句平均响应时间最长(TOP 5) SELECT * FROM sys.statements_with_runtimes_in_95th_percentile LIMIT 5;
总结与类比
数据库名称 | 类比 | 主要使用者 |
---|---|---|
| 图书馆的中央目录索引系统 | 开发者、DBA |
| 操作系统的用户账户和权限管理中心 | DBA |
| 飞机的黑匣子或汽车的发动机详细仪表 | DBA、性能优化工程师 |
| 汽车驾驶舱里简化的速度和油耗表 | DBA、开发者(更易用) |
建议:
- 尽量不要直接修改
mysql
,performance_schema
,sys
这几个系统数据库中的表。 - 你的所有业务数据和应用表都应该创建在自定义数据库中。
- 如果想查看性能信息,可以先从
sys
库开始查询,它会更容易理解。