作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
Redis
Etcd
上个小节我们介绍了MYSQL的默认库(mysql),这个小节我们来介绍另外一个库(performance_schema),他是MySQL的元数据库,提供数据库、表、列、索引等所有数据库对象的结构信息。
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| OPTIMIZER_TRACE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| INNODB_LOCKS |
| INNODB_TRX |
| INNODB_SYS_DATAFILES |
| INNODB_FT_CONFIG |
| INNODB_SYS_VIRTUAL |
| INNODB_CMP |
| INNODB_FT_BEING_DELETED |
| INNODB_CMP_RESET |
| INNODB_CMP_PER_INDEX |
| INNODB_CMPMEM_RESET |
| INNODB_FT_DELETED |
| INNODB_BUFFER_PAGE_LRU |
| INNODB_LOCK_WAITS |
| INNODB_TEMP_TABLE_INFO |
| INNODB_SYS_INDEXES |
| INNODB_SYS_TABLES |
| INNODB_SYS_FIELDS |
| INNODB_CMP_PER_INDEX_RESET |
| INNODB_BUFFER_PAGE |
| INNODB_FT_DEFAULT_STOPWORD |
| INNODB_FT_INDEX_TABLE |
| INNODB_FT_INDEX_CACHE |
| INNODB_SYS_TABLESPACES |
| INNODB_METRICS |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_CMPMEM |
| INNODB_BUFFER_POOL_STATS |
| INNODB_SYS_COLUMNS |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_TABLESTATS |
+---------------------------------------+
61 rows in set (0.00 sec)TABLES - 系统所有库的表的基本信息(表名、引擎、行数、创建时间等) COLUMNS - 系统所有库的表列信息(数据类型、是否为空、默认值等) VIEWS - 视图定义信息 ROUTINES - 存储过程和函数定义 TRIGGERS - 触发器信息 EVENTS - 事件调度器信息 PARTITIONS -系统中的所有库。 注:也就是我们创建的库表等资源对象都记录在这里。
STATISTICS - 索引统计信息(索引名、列名、数量等) TABLE_CONSTRAINTS - 表约束(主键、唯一键、外键等) KEY_COLUMN_USAGE - 键列使用情况 REFERENTIAL_CONSTRAINTS - 外键约束详细信息
CHARACTER_SETS - 支持的字符集(最常用的utf8等) COLLATIONS - 校对规则 COLLATION_CHARACTER_SET_APPLICABILITY - 字符集与校对规则映射
USER_PRIVILEGES - 用户全局权限,可以查看所有的用户及权限。 SCHEMA_PRIVILEGES - 数据库级权限 TABLE_PRIVILEGES - 表级权限 COLUMN_PRIVILEGES - 列级权限
注:可以理解所有的权限就是这些表的组合。
GLOBAL_VARIABLES - 全局系统变量 SESSION_VARIABLES - 会话系统变量 GLOBAL_STATUS - 全局状态变量 SESSION_STATUS - 会话状态变量 PROCESSLIST - 当前连接进程 PLUGINS - 已安装插件 ENGINES - 支持的存储引擎 FILES - 文件信息 TABLESPACES - 表空间信息
注:有些表是不能直接使用select 进行查询的,通过查询这些表的信息(其他方法)可以查看到数据库的底层配置参数等。
PARAMETERS - 存储过程和函数参数 PROFILING - 查询性能分析(已弃用) OPTIMIZER_TRACE - 优化器跟踪信息
这种分类方式清晰地展示了 information_schema 作为 MySQL 元数据信息库的核心功能,涵盖了数据库结构、权限、性能监控等各个方面。
这个命令才是我最常用的使用这个库表的命令,不过我每次都是用的时候时候才搜索,或者现在可以直接让AI生成。
mysql> SELECT
-> TABLE_SCHEMA,
-> TABLE_NAME,
-> TABLE_ROWS,
-> ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 'Size_MB',
-> ENGINE,
-> TABLE_COMMENT
-> FROM information_schema.TABLES
-> WHERE TABLE_SCHEMA = 'test_db'
-> ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
+--------------+--------------------+------------+---------+--------+---------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | Size_MB | ENGINE | TABLE_COMMENT |
+--------------+--------------------+------------+---------+--------+---------------+
| test_db | test_data | 7587917 | 665.88 | InnoDB | |
| test_db | users | 2 | 0.03 | InnoDB | |
| test_db | user_audit_log | 0 | 0.02 | InnoDB | |
| test_db | departments | 0 | 0.02 | InnoDB | |
| test_db | myisam_table | 0 | 0.00 | MyISAM | |
| test_db | vw_test_data_basic | NULL | NULL | NULL | VIEW |
+--------------+--------------------+------------+---------+--------+---------------+
6 rows in set (0.00 sec)