MySQL安装完成后,默认创建mysql、information_schema、performance_schema和sys四大核心系统库。它们不存储业务数据,而是分别掌管用户权限、元数据管理、性能监控和性能诊断简化,是DBA运维、开发调试和性能优化的核心工具。掌握这四大系统库的使用方法,能大幅提升数据库管理效率。本文将从核心作用、关键表结构和实用SQL三个维度进行系统解析。
mysql库是MySQL权限系统的根基,物理存储于磁盘,记录了数据库运行所需的所有核心配置信息,包括用户账号、密码哈希、各级权限、时区、主从复制配置、慢查询日志和通用日志等。
核心表结构方面,user表存储所有用户的全局权限和账号信息,是权限管理的核心;db表存储数据库级别的权限配置;tables_priv和columns_priv分别存储表级和列级权限;procs_priv存储存储过程和函数的权限;time_zone系列表处理时区信息。
实用SQL查询包括:查看所有用户及主机SELECT user, host FROM mysql.user;;查看特定用户的详细权限SELECT * FROM mysql.user WHERE user = 'root'\G;;查看某用户对特定数据库的权限SELECT * FROM mysql.db WHERE User = 'report_user';。修改权限后需执行FLUSH PRIVILEGES;使变更立即生效。
information_schema是符合ANSI/ISO SQL标准的虚拟数据库,数据驻留内存、只读且不支持DML操作,随数据库结构变化动态生成,是查询数据库元数据的标准入口。
关键表结构包括:SCHEMATA表存储所有数据库的信息(数据库名、字符集、排序规则);TABLES表存储所有表的元数据(表名、引擎、行数、数据长度、索引长度、创建时间);COLUMNS表存储所有列的详细信息(列名、数据类型、默认值、是否允许NULL、注释);STATISTICS表存储索引统计信息;TABLE_CONSTRAINTS和KEY_COLUMN_USAGE存储约束和外键信息;ROUTINES、TRIGGERS、VIEWS分别存储存储过程、触发器和视图的定义。
实用SQL查询包括:查看所有数据库SELECT SCHEMA_NAME FROM information_schema.SCHEMATA;;查看某库下所有表及行数SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'testdb';;查找没有主键的表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 TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'PRIMARY KEY');。
performance_schema是MySQL 5.7+默认开启的性能监控引擎,通过采集服务器内部的事件(SQL执行、锁等待、I/O操作、内存分配、线程状态等)来诊断性能瓶颈,数据驻留内存、重启清空。
关键表结构分为五类:setup_*系列表(setup_instruments、setup_consumers、setup_actors)用于配置监控开关;events_statements_*系列表(events_statements_current、events_statements_history、events_statements_summary_by_digest)记录SQL语句的执行统计,其中summary_by_digest表按归一化SQL模板聚合执行次数、总耗时、平均耗时等核心指标;events_waits_*系列表记录锁等待和I/O等待事件;file_summary_*系列表记录文件I/O统计;threads表记录服务器线程信息。
实用SQL查询包括:查询最耗时的SQLSELECT DIGEST_TEXT, COUNT_STAR, SUM_TIMER_WAIT/1000000000000 AS sum_sec FROM performance_schema.events_statements_summary_by_digest ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;;查询未使用的索引SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME FROM performance_schema.table_io_waits_summary_by_index_usage WHERE INDEX_NAME IS NOT NULL AND COUNT_STAR = 0 AND OBJECT_SCHEMA <> 'mysql';。注意TIMER_WAIT字段单位为皮秒,需除以10¹²转换为秒。
sys库是MySQL 5.7+引入的辅助数据库,基于performance_schema和information_schema构建,将复杂的底层监控数据转化为易读的视图和函数,大幅降低性能分析门槛。
关键视图分为两类:字母开头的视图(如host_summary、statement_analysis)适合人工阅读,显示格式化后的数据;x 开头的视图(如
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com