系统默认数据库
数据其实可以存储在⽂本⽂件中,但是只适⽤于数据量很少的时候,数据量很少的情况下,在⽂件中保存数据、读写数据,操作简单便利且速度快;但是当数据量稍微⼤的情况,普通⽂本⽂件保存数据的⽅式就显得捉襟⻅肘,甚⾄束⼿⽆策。⽐如数据结构、数据类型⽆法设计,数据读写⽅式复杂且速度慢,对于复杂的数据查询更是⽆法做到。所以需要专业的数据库软件;
存储数据也可以使⽤微软的 Excel,但是,随着数据越来越多,在 Excel这样的电⼦表格⾥查找数据就变得很慢,⽽且不可靠。所以需要更⾼效的数据库管理软件。
在安装MySQL时系统会⾃动创建⼏个数据库,
information_schema
通过information_schema我们可以窥透整个MySQL实例的运行情况,可以了结MySQL实例的基本信息,甚至优化调优,维护数据库等
该数据库中的表都是只读的,不能进行更新、删除和插入等操作,也不能加载触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。
主要存储了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限,字符集信息、分区信息等
information_schema 数据库的数据表
+---------------------------------------+---------------------------------------+ | Tables_in_information_schema | 介绍 +---------------------------------------+---------------------------------------+ | CHARACTER_SETS |存储数据库相关字符集信息 | COLLATIONS |字符集对应的排序规则 | COLLATION_CHARACTER_SET_APPLICABILITY |指明了可用于校对的字符集,这些列等效于SHOW COLLATION的前两个显示字段。 | COLUMNS |该数据表存储了mysql数据库中的所有列的列名以及每个列的信息,所有的存储引擎 | COLUMN_PRIVILEGES |列权限 | ENGINES |引擎类型 | EVENTS |记录MySQL中的事件,类似于定时作业 | FILES |有关在MySQL的表空间中的数据存储的文件的信息,文件存储的位置,这个表的数据是从InnoDB in-memory中拉取出来的,所以说这张表本身也是一个内存表,每次重启重新进行拉取 | GLOBAL_STATUS |系统的状态 | GLOBAL_VARIABLES |系统的变量 | KEY_COLUMN_USAGE |描述了具有约束的键列。 | OPTIMIZER_TRACE |提供的是优化跟踪功能产生的信息 | PARAMETERS |存储了一些存储过程和方法的参数,以及存储过程的返回值信息 | PARTITIONS |MySQL分区表相关的信息,通过这张表我们可以查询到分区的相关信息(数据库中已分区的表,以及分区表的分区和每个分区的数据信息) | PLUGINS |基本上是MySQL的插件信息,是否是活动状态等信息 | PROCESSLIST |存储了当前连接信息 | PROFILING |可以深入的查看服务器执行语句的工作情况。以及也能帮助理解执行语句消耗时间的情况。局限是不能查看和剖析其他连接的语句,以及剖析时所引起的消耗 | REFERENTIAL_CONSTRAINTS |外键相关的信息 | ROUTINES |关于存储过程和方法function的一些信息,不过这个信息是不包括用户自定义的,只是系统的一些信息 | SCHEMATA |该数据表存储了mysql数据库中的所有数据库的库名 | SCHEMA_PRIVILEGES |数据库权限 | SESSION_STATUS |会话的信息 | SESSION_VARIABLES |会话的变量 | STATISTICS |提供了关于表索引的信息 | TABLES |该数据表存储了mysql数据库中的所有数据表的表名(其中字段 TABLE_SCHEMA:记录数据库名;TABLE_NAME:记录数据表名;TABLE_ROWS:记录表中粗略的行数;DATA_LENGTH:记录表的大小以字节为单位) | TABLESPACES |标注的活跃表空间 | TABLE_CONSTRAINTS |描述了存在约束的表,以及表的约束类型。 | TABLE_PRIVILEGES |表权限 | TRIGGERS |记录触发器的信息,包括所有的相关的信息 | USER_PRIVILEGES |用户权限,关于全程权限的信息 | VIEWS |给出了关于数据库中的视图的信息 | INNODB_LOCKS |现在获取的锁,但是不含没有获取的锁,而且只是针对INNODB的 | INNODB_TRX |包含了所有正在执行的的事物相关信息(INNODB),而且包含了事物是否被阻塞或者请求锁 | INNODB_SYS_DATAFILES |记录的表的文件存储的位置和表空间的一个对应关系(INNODB) | INNODB_FT_CONFIG |存的是全文索引的信息 | INNODB_SYS_VIRTUAL |存储的是INNODB表的虚拟列的信息 | INNODB_CMP |存储的是关于压缩INNODB信息表的时候的相关信息 | INNODB_FT_BEING_DELETED |该表仅在OPTIMIZE TABLE语句执行维护操作期间作为INNODB_FT_DELETED表的快照数据存放使用。运行OPTIMIZE TABLE语句时,会先清空INNODB_FT_BEING_DELETED表中的数据,保存INNODB_FT_DELETED表中的快照数据到INNODB_FT_BEING_DELETED表,并从INNODB_FT_DELETED表中删除DOC_ID。由于INNODB_FT_BEING_DELETED表中的内容通常生命周期较短,因此该表中的数据对于监控或者调试来说用处并不大 | INNODB_CMP_RESET |同 INNODB_CMP,但是每次查询之后会清空数据 | INNODB_CMP_PER_INDEX |关于压缩INNODB信息表 | INNODB_CMPMEM_RESET |同 INNODB_CMPEM,但是每次查询这个表会清空 RELOCATION_TIME 字段的值 | INNODB_FT_DELETED |包含了从全文索引中已经删除的行,这些信息用于过滤查询请求的结果,解决每次删除一行时昂贵的重新组织索引操作 | INNODB_BUFFER_PAGE_LRU |有关缓冲池中页的信息,以及出于清除目的如何对页进行排序 | INNODB_LOCK_WAITS |系统锁等待相关信息,包含了阻塞的一行或者多行的记录,而且还有锁请求和被阻塞改请求的锁信息等 | INNODB_TEMP_TABLE_INFO |记录所有的INNODB的所有用户使用到的信息,但是只能记录在内存中和没有持久化的信息 | INNODB_SYS_INDEXES |相关INNODB表的索引的相关信息 | INNODB_SYS_TABLES |提供了有关表格的格式和存储特性,包括行格式,压缩页面大小位级别的信息 | INNODB_SYS_FIELDS |记录的是INNODB的表索引字段信息,以及字段的排名 | INNODB_CMP_PER_INDEX_RESET |于压缩INNODB索引信息 | INNODB_BUFFER_PAGE |存的是buffer里面缓冲的页数据。查询这个表会对性能产生很严重的影响 | INNODB_FT_DEFAULT_STOPWORD |包含了用于创建全文索引的停止词列表 | INNODB_FT_INDEX_TABLE |存储的是关于INNODB表有全文索引的索引使用信息的 | INNODB_FT_INDEX_CACHE |存放的是插入前的记录信息,也是为了避免DML时候昂贵的索引重组 | INNODB_SYS_TABLESPACES |关于INNODB的表空间信息 | INNODB_METRICS |提供INNODB的各种的性能指数 | INNODB_SYS_FOREIGN_COLS |存储的INNODB关于外键的元数据信息 | INNODB_CMPMEM |MySQL INNODB的压缩页的buffer pool信息,由于用来收集的时候是会对性能造成严重的影响的,所以说默认是关闭状态的 | INNODB_BUFFER_POOL_STATS |有关INNODB 的buffer pool相关信息 | INNODB_SYS_COLUMNS |存放的是INNODB的元数据 | INNODB_SYS_FOREIGN |存储的IN