
在MySQL的安装和初始化过程中,系统会自动创建几个默认数据库,这些数据库是MySQL服务正常运行的基础,对数据库管理员(DBA)和开发人员都具有重要意义
本文将深入解析MySQL默认的几个库,并探讨其在实际应用中的价值
一、MySQL默认数据库概览 MySQL在初始化完成后,通常会创建以下四个系统库:information_schema、performance_schema、mysql和sys
这些系统库主要记录了MySQL服务自身的信息,如用户信息、库表信息等,对数据库的管理和维护至关重要
1. information_schema information_schema是MySQL的一个元数据库,它包含了MySQL服务器所管理的所有其他数据库的信息
这个库中的表提供了关于数据库、表、列、索引、视图、存储过程和触发器等的信息
通过查询information_schema中的表,用户可以获得关于数据库结构的全面视图
例如,可以查询tables表来获取所有数据库中的所有表的信息,或者查询columns表来获取特定表的列信息
在实际应用中,information_schema库被频繁用于数据库审计、监控和优化
例如,可以使用它来统计每个数据库中的表数量、表大小,或者查找非InnoDB引擎的表
2. performance_schema performance_schema提供了MySQL服务器运行时性能数据的访问
它包含了关于服务器内部事件、等待、锁、事务、资源消耗等方面的信息
通过查询performance_schema中的表,用户可以深入了解MySQL服务器的性能瓶颈和潜在问题
然而,由于performance_schema中的信息较为复杂,官方特意将其简化并形成了sys库,以便更快速地了解数据库运行情况
尽管如此,performance_schema仍然是DBA进行性能调优和故障排除的重要工具
3. mysql mysql库是MySQL的核心数据库,它存储了数据库用户、权限、插件等信息
这个库中的表对于数据库的安全性和管理至关重要
例如,user表记录了每个用户的全局权限,db表记录了库级别的权限,tables_priv、columns_priv等表则记录了表级和列级的权限
此外,mysql库还包含了与事件调度、GTID主从复制等相关的表
通过修改这些表,用户可以灵活地配置数据库的事件调度策略、复制关系等
4. sys sys库是MySQL 5.7及更高版本中引入的一个数据库,它基于performance_schema提供了更简洁、更直观的视图和存储过程,以便用户更快速地了解数据库的运行情况
sys库中的所有数据都来自performance_schema,但经过优化和简化,使得查询更加高效
sys库中的视图和存储过程涵盖了数据库性能监控、诊断和优化等多个方面
例如,可以使用sys库中的session视图来查看当前正在运行的SQL语句,或者使用statements_with_full_table_scans视图来查找执行了全表扫描的SQL语句
二、MySQL默认库的实际应用 MySQL的默认库在数据库管理、监控和优化中发挥着重要作用
以下是一些实际应用案例,展示了如何利用这些库来提高数据库的性能和安全性
1. 统计数据库信息 利用information_schema库,可以方便地统计数据库中的各类信息
例如,可以统计每个数据库中的表数量、表大小以及占用空间等
这些信息对于数据库的容量规划和性能优化具有重要意义
sql -- 统计每个数据库中的表数量 SELECT table_schema, COUNT(table_name) AS table_count FROM information_schema.tables GROUP BY table_schema; -- 统计每个数据库占用空间总大小(以MB为单位) SELECT table_schema, SUM(AVG_ROW_LENGTHTABLE_ROWS+INDEX_LENGTH)/1024/1024 AS total_size_MB FROM information_schema.TABLES GROUP BY table_schema; 2. 查找非InnoDB表 在MySQL中,InnoDB是默认的存储引擎,它提供了事务支持、行级锁定和外键约束等高级功能
然而,在某些情况下,可能会使用其他存储引擎(如MyISAM)
利用information_schema库,可以方便地查找非InnoDB表,以便进行必要的优化或迁移
sql -- 查找非InnoDB表 SELECT table_schema, table_name FROM information_schema.tables WHERE ENGINE!= InnoDB AND table_schema NOT IN(sys, performance_schema, information_schema, mysql); 3. 管理用户权限 mysql库中的user、db、tables_priv等表存储了数据库用户的权限信息
通过查询和修改这些表,可以灵活地管理数据库的用户权限,确保数据库的安全性和合规性
sql -- 查询特定用户的全局权限 SELECT - FROM mysql.user WHERE user=your_user_name; -- 授予用户特定数据库的SELECT权限 GRANT SELECT ON your_database- . TO your_user_name@your_host; 4. 性能监控与优化 performance_schema和sys库提供了丰富的性能监控和优化工具
通过查询这些库中的表和视图,可以深入了解数据库的性能瓶颈和潜在问题,并采取相应的优化措施
sql -- 使用sys库查看当前正在运行的SQL语句 SELECT conn_id, USER, current_statement, last_statement FROM sys.session; -- 使用performance_schema查找执行了全表扫描的SQL语句(注意:这只是一个示例,实际查询可能更复杂) SELECT FROM performance_schema.events_statements_history_long WHERE DIGEST_TEXT LIKE %your_query_pattern% AND FULL_SCAN = YES; 需要注意的是,由于performance_schema中的信息较为复杂,且可能包含大量的性能数据,因此在查询时需要谨慎选择所需的表和字段,以避免对数据库性能造成负面影响
相比之下,sys库提
Linux系统下MySQL数据库的安装与使用指南
MySQL默认数据库全解析
MySQL数据库表不存在?快速排查指南
Ubuntu下MySQL可视化工具精选
检查MySQL表数据是否存在
MySQL导入CSV遇1290错误解决指南
MySQL数据库:掌握条件语句的编写技巧
Linux系统下MySQL数据库的安装与使用指南
MySQL数据库表不存在?快速排查指南
Ubuntu下MySQL可视化工具精选
检查MySQL表数据是否存在
MySQL导入CSV遇1290错误解决指南
MySQL数据库:掌握条件语句的编写技巧
MySQL建表引擎选择与优化指南
MySQL取数相乘实用技巧指南
MySQL错误110:连接问题全解析
MySQL技巧:利用UPDATE NOT IN优化数据
MySQL迁移小程序:一键数据迁移指南
二级MySQL考试攻略:备考要点与应试技巧全解析