暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 内置数据库详解:你不知道的系统秘密!

程序员极光 2025-06-05
90

在使用 MySQL 时,很多人关注的是业务数据库,却忽略了那些系统自动创建的“内置数据库”。它们不是多余的摆设,而是支撑 MySQL 正常运行的关键结构。

今天我们就带你详细解读 MySQL 中几个自带的系统数据库,了解它们的功能和作用,轻松迈入高级 DBA 的大门。


🏛️ 一览:MySQL 内置数据库都有谁?

数据库名
主要作用
mysql
用户权限与系统配置的核心库
information_schema
提供数据库结构的元数据(只读视图)
performance_schema
性能监控与 SQL 运行时统计
sys
简化性能调优的高级视图集合
innodb
(MySQL 8.0.30+)
提供 InnoDB 存储引擎的底层信息

1️⃣ mysql
:核心元数据中心

这是最关键的系统数据库之一,几乎所有权限管理、账号设置等系统配置都保存在这里。

常见表介绍:

  • user
    :存储所有用户账号及其权限。
  • db
    :控制用户对某个数据库的访问权限。
  • tables_priv
     / columns_priv
    :控制用户对表和列的操作权限。
  • time_zone
     系列:处理时区信息。
  • help_topic
     等:系统帮助文档索引。

📝 小提示:修改权限后记得执行 FLUSH PRIVILEGES
,让变更立即生效!


2️⃣ information_schema
:元数据查询的窗口

这是一个虚拟数据库,里面的数据来自于系统运行时的信息。它为你提供了数据库结构的全面视图,是开发调试时的好帮手。

常见视图示例:

  • SCHEMATA
    :当前所有数据库的列表。
  • TABLES
     / COLUMNS
    :查看所有表及其字段的详细信息。
  • STATISTICS
    :索引信息一览。
  • TRIGGERS
     / ROUTINES
    :查看触发器和存储过程。

3️⃣ performance_schema
:性能分析利器

如果你想优化数据库性能,这个数据库你一定得了解。它记录了 SQL 执行、IO 等底层资源的详细数据。

它能干什么?

  • 跟踪 SQL 执行的耗时
  • 统计资源使用情况(内存、锁、线程等)
  • 分析数据库等待瓶颈

代表性表:

  • events_statements_history
    :历史 SQL 语句执行信息。
  • events_waits_summary_by_instance
    :资源等待统计。
  • threads
    :连接线程详情。

📌 建议只在需要性能诊断时开启,避免对数据库本身性能造成影响。


4️⃣ sys
:为 DBA 打造的贴心工具包

sys
 数据库是在 performance_schema
 和 information_schema
 之上构建的一组视图,它让性能分析变得更简单直观。

常用视图:

  • sys.processlist
    :代替 SHOW PROCESSLIST
    ,更美观更实用。
  • sys.user_summary
    :统计每个用户的连接和资源使用。
  • sys.schema_table_statistics
    :表操作统计,便于发现热点表。

📈 对 DBA 而言,这是快速定位性能瓶颈的利器。


5️⃣ innodb
(MySQL 8.0.30+ 新增):InnoDB 内部结构探秘

这是一个新的系统库,专门用于查看 InnoDB 存储引擎的底层结构和状态信息。

可以查看:

  • Undo/Redo 日志状态
  • 表空间信息
  • 事务历史

适合进行深度优化和高级诊断,尤其在处理复杂事务和锁竞争时非常有用。


✅ 总结一下:

使用场景
推荐数据库
权限与账号管理
mysql
查看数据结构
information_schema
分析性能问题
performance_schema
 + sys
深度诊断 InnoDB
innodb
(8.0.30+)

🧪 实战案例一:用 mysql
 数据库管理用户权限

场景:你想创建一个只能访问 sales_db
 数据库的普通查询用户。

操作步骤:

-- 创建用户
CREATE USER 'report_user'@'%' IDENTIFIED BY 'securePass123';

-- 授权访问某个库的只读权限
GRANT SELECT ON sales_db.* TO 'report_user'@'%';

-- 查看权限是否生效(查看 mysql.db 表)
SELECT * FROM mysql.db WHERE User = 'report_user';

实战技巧:

  • 权限修改完成后,执行 FLUSH PRIVILEGES;
     让其立即生效。
  • 可以手动检查 mysql.user
     或 mysql.db
     表确认授权是否正确。

🧪 实战案例二:用 performance_schema
 分析慢 SQL

场景:你发现数据库响应慢,怀疑某些 SQL 执行效率低。

操作步骤:

-- 查询最近执行过的慢 SQL
SELECT 
  DIGEST_TEXT, 
  COUNT_STAR AS exec_count, 
  SUM_TIMER_WAIT/1000000000000 AS total_exec_time_sec
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 5;

实战技巧:

  • 结合 sys.statement_analysis
     视图更直观。
  • 可用于定位慢查询热点(如重复执行频繁或单次耗时长的语句)。

🧪 实战案例三:用 information_schema
 审计表结构

场景:你需要检查所有表中是否存在没有主键的表,以避免潜在性能问题。

SQL 示例:

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME
FROM information_schema.tables
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_SCHEMA NOT IN ('mysql''information_schema''performance_schema''sys')
AND TABLE_NAME NOT IN (
  SELECT DISTINCT TABLE_NAME
  FROM information_schema.table_constraints
  WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
);

实战技巧:

  • 该查询帮助开发或 DBA 对库进行结构健康检查。
  • 可结合自动巡检脚本每月执行一次。

📚 官方文档参考资料

  1. MySQL :: MySQL 8.0 Reference Manual – Chapter 5.1: The mysql System Schemahttps://dev.mysql.com/doc/refman/8.0/en/mysql-database.html

  2. MySQL :: MySQL 8.0 Reference Manual – Chapter 25: The INFORMATION_SCHEMA Databasehttps://dev.mysql.com/doc/refman/8.0/en/information-schema.html

  3. MySQL :: MySQL 8.0 Reference Manual – Chapter 26: The PERFORMANCE_SCHEMA Storage Enginehttps://dev.mysql.com/doc/refman/8.0/en/performance-schema.html

  4. MySQL :: MySQL 8.0 Reference Manual – Chapter 27: The sys Schemahttps://dev.mysql.com/doc/refman/8.0/en/sys-schema.html

  5. MySQL :: MySQL 8.0 Reference Manual – Chapter 28: The InnoDB Storage Enginehttps://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.html

  6. MySQL :: What's New in MySQL 8.0.30https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html

    说明:MySQL 8.0.30 开始引入了 innodb
     系统数据库,包含内部数据结构视图。

最后修改时间:2025-06-18 15:44:50
文章转载自程序员极光,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论