在安装MySQL数据库时,系统会默认创建一系列关键的表,这些表不仅承载着数据库的核心元数据,还涉及到性能监控、用户权限管理等多个方面
本文将深入探讨MySQL中的默认表,揭示它们在数据库系统中的重要作用
一、MySQL默认表的概述 MySQL中的默认表通常是指在数据库服务器安装过程中自动创建的系统表,这些表存储了关于数据库服务器本身的元数据和系统配置信息
它们对于数据库管理员和开发人员来说至关重要,因为它们提供了关于数据库结构和运行状态的重要线索
通过合理利用这些默认表,用户可以更有效地监控和管理MySQL数据库,确保其性能和安全
MySQL自带几个关键的系统数据库,这些数据库包含了MySQL Server的元数据和系统配置信息,是数据库管理和监控的核心组件
其中,information_schema、performance_schema、mysql和(在某些版本中)sys是四个最为核心的系统数据库,它们各自包含了一系列重要的系统表
二、核心系统数据库及默认表 1.information_schema information_schema是MySQL中用于存储数据库和表的元数据信息的系统数据库
它是一个只读的数据库,提供了关于其他所有数据库的元数据信息,如数据库名称、表名称、列名称、数据类型等
这个数据库是了解数据库结构的重要工具,通过查询information_schema中的表,用户可以获取关于数据库和表的详细信息
常用表及查询示例: tables:存储了数据库中所有表的信息
+ 查询所有数据库:`SELECT SCHEMA_NAME AS DatabaseName, DEFAULT_COLLATION_NAME AS Collation FROM information_schema.SCHEMATA;` + 查询指定数据库的所有表:`SELECT TABLE_NAME AS TableName, ENGINE AS StorageEngine, TABLE_ROWS AS RowCount FROMinformation_schema.TABLES WHERETABLE_SCHEMA=your_database_name;` t- columns:存储了数据库中所有表的列信息
+ 查询指定表的所有列:`SELECT COLUMN_NAME AS ColumnName,DATA_TYPE AS DataType,CHARACTER_MAXIMUM_LENGTH AS MaxLength, IS_NULLABLE AS IsNullable FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=your_database_name ANDTABLE_NAME=your_table_name;` information_schema中的表为用户提供了强大的查询和管理数据库结构和属性的能力
2.performance_schema performance_schema是MySQL中用于存储性能相关信息的系统数据库
它提供了一系列的表,用于查询和监控MySQL服务器的性能指标,如事件等待情况、互斥锁情况等
通过这个数据库,用户可以对数据库的性能进行详细的监控和优化,及时发现和解决性能瓶颈
常用表及查询示例: t- table_io_waits_summary_by_table:存储了所有表的IO操作信息
+ 查询所有表的IO操作:`SELECT OBJECT_SCHEMA AS DatabaseName,OBJECT_NAME AS TableName, COUNT_READ AS ReadCount,COUNT_WRITE AS WriteCount FROM performance_schema.table_io_waits_summary_by_table;` threads:存储了所有线程的状态信息
+ 查询所有线程的状态:`SELECTTHREAD_ID AS ThreadId, THREAD_OS_ID AS OSThreadId, PROCESSLIST_ID AS ProcessId, PROCESSLIST_USER AS User, PROCESSLIST_HOST AS Host, PROCESSLIST_STATE AS State FROMperformance_schema.threads;` performance_schema中的表为数据库管理员提供了详细的性能监控数据,是优化数据库性能的重要工具
3. mysql mysql是MySQL中存储用户和权限信息的系统数据库
它包含了用于管理用户、授权和权限等的表,如user、db、tables_priv等
这些表在数据库的安全性和配置管理方面发挥着关键作用
常用表及查询示例: user:存储了所有用户的信息和权限设置
+ 查询所有用户:`SELECT user, host FROM mysql.user;` + 创建新用户并授予权限: CREATE USER your_username@localhost IDENTIFIED BY your_password; GRANT ALL PRIVILEGES ONyour_database_- name. TO your_username@localhost; FLUSH PRIVILEGES; + 授予用户特定表的权限: GRANT SELECT, INSERT, UPDATE, DELETE ON your_database_name.your_table_name TO your_username@localhost; FLUSH PRIVILEGES; db:存储了数据库级别的权限信息
+ 查询某个数据库的权限:`SELECT Database, User, Host,Select_priv FROM mysql.db WHERE Database=your_database;` t- tables_priv:存储了表级别的权限信息
+ 查询特定表的权限信息:`SELECT Table_name, User, Host, Table_priv FROM mysql.tables_priv WHERE Table_name=your_table;` t- columns_priv:存储了列级别的权限信息
+ 查询特定列的权限:`SELECTColumn_name, User, Host,Column_priv FROM mysql.columns_priv WHERETable_name=your_table;` mysql数据库中的表为用户权限管理提供了细粒度的控制手段,是保障数据库安全性的关键部分
4. sys(MySQL 8.0及以上版本) sys是MySQL 8.0版本引入的新系统数据库,它建立在information_schema和performance_schema的基础上,提供了更方便和易读的方式来查询和操作MySQL服务器的元数据和性能信息
sys数据库中的表是更高层次的视图,它们整合了information_schema和performance_schema中的信息,为用户提供了更加直观和易用的性能监控和用户管理界面
常用表及查询示例: tables:提供了数据库和表的大小信息
+ 查询数据库和表的大小: SELECT table_schema AS DatabaseName,table_name AS TableName, sys.format_bytes(data_length) AS DataSize, sys.format_bytes(index_length) AS IndexSize, sys.format_bytes(data_length+index_length) AS TotalSize FROM sys.tables; t- statement_analysis:提供了慢查询日志的分析信息
+ 查询慢查询日志: SELECT event_time AS EventTime,user_host AS UserHost, sql_text AS SqlText,timer_wait AS WaitTime FROM sys.statement_analysis WHERE schema_name=your_database_name ANDtimer_wait>0 ORDER BYtimer_wait DESC; sys数据库中的表为用户提供了更加便捷的性能监控和用户管理手段,是MySQL 8.0及以上版本中不可或缺的系统组件
三、默认表的重要性与应用 MySQL中的默认表是数据库管理和监控的核心组件,它们存储了关于数据库本身的重要信息,如元数据、性能数据和管理信息等
这些表对于数据库的管理和维护至关重要,它们为