information_schema系列三(文件,变量)

这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益。
1:FILES
这张表提供了有关在MySQL的表空间中的数据存储的文件的信息
 
我们刚创建一张表,现在来看一下这张表,我新建了一张maxiangqian名字的表,然后进行查询。
在5.7.8以后版本FILES就是为InnoDB 的数据文件提供记录。在MySQL集群该表还提供了有关在MySQL集群磁盘数据表存储的文件的信息。
这个表的数据是从InnoDB in-memory中拉取出来的,所以说这张表本身也是一个内存表,每次重启重新进行拉取。也就是我们下面要说的INNODB_SYS_DATAFILES这张表。还要注意一点的是这张表包含有临时表的信息,所以说和SYS_DATAFILES 这张表是不能够对等的,还是要从INNODB_SYS_DATAFILES看。如果undo表空间也配置是InnoDB 的话,那么也是会被记录下来的。
老规矩贴一下官网的全表的解释:中间show name是J结合官方解释后我自己的理解
 
INFORMATION_SCHEMA NameSHOW NameRemarks
FILE_ID文件的编号MySQL extension
FILE_NAME文件名MySQL extension
FILE_TYPE表空间文件类型MySQL extension
TABLESPACE_NAME表空间名MySQL extension
TABLE_CATALOG MySQL extension
TABLE_SCHEMA MySQL extension
TABLE_NAME MySQL extension
LOGFILE_GROUP_NAME MySQL extension
LOGFILE_GROUP_NUMBER MySQL extension
ENGINE默认引擎MySQL extension
FULLTEXT_KEYS MySQL extension
DELETED_ROWS MySQL extension
UPDATE_COUNT MySQL extension
FREE_EXTENTS在当前的数据文件的可用空间MySQL extension
TOTAL_EXTENTS当前文件占用的空间MySQL extension
EXTENT_SIZEpage size如果是4,8,16KB的话就是1M。如果是32k的话就是2M,64k的话就是4M,innodb_page_size记录页大小,其他的时候,默认不会记录这个大小。MySQL extension
INITIAL_SIZE文件初始大小,以字节为单位MySQL extension
MAXIMUM_SIZE允许的文件最大值,一般情况下这个值是NULLMySQL extension
AUTOEXTEND_SIZE自增长的值,可以通过两个值设置innodb_data_file_path ,innodb_temp_data_file_pathMySQL extension
CREATION_TIME MySQL extension
LAST_UPDATE_TIME MySQL extension
LAST_ACCESS_TIME MySQL extension
RECOVER_TIME MySQL extension
TRANSACTION_COUNTER MySQL extension
VERSION MySQL extension
ROW_FORMAT MySQL extension
TABLE_ROWS MySQL extension
AVG_ROW_LENGTH MySQL extension
DATA_LENGTH MySQL extension
MAX_DATA_LENGTH MySQL extension
INDEX_LENGTH MySQL extension
DATA_FREE可用空间MySQL extension
CREATE_TIME创建时间MySQL extension
UPDATE_TIME更改时间MySQL extension
CHECK_TIME MySQL extension
CHECKSUM MySQL extension
STATUS默认这个值是NOMAL,当为 IMPORTING时候就表示不可用MySQL extension
EXTRA MySQL extension
 
一般情况下我们直接筛选出来查询还是比较好的,通过下面的语句,其他的列一般是不会记录信息的,官网也没给太多的解释:
SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE FROM INFORMATION_SCHEMA.FILES \G

2:INNODB_SYS_DATAFILES

我们来重新查一下这个记录信息:
 
很容易看出来这张表就是记录的表的文件存储的位置和表空间的一个对应关系。这个就是相当容易理解了,就不多做解释了。
不过有一点我们要记住,这个表的SPACE是和FILES这张系统表的TABLESPACE_NAME这个列的最后一个值是相对应的。可以方便我们以后查阅
3:GLOBAL_STATUS 和 SESSION_STATUS 
这张表默认是提供有关服务器状态变量的信息来用的一般情况是不启用的,我们可以通过以下的方法来查看信息
  SHOW GLOBAL STATUS 和GLOBAL_STATUS 是对应的
贴一下列,由于两个表的列是一样的,所以说贴出来一个就好了
 
INFORMATION_SCHEMA NameSHOW NameRemarks
VARIABLE_NAME变量名 
VARIABLE_VALUE变量值 
 
详细的参数我就不再讲了,因为我也不懂啊。后面慢慢补上来。
4:GLOBAL_VARIABLES 和SESSION_VARIABLES
这两张系统表爷放在了一起,主要原因和上面两张是一样的,结构相同,而且可以通过其他方式查询,所以一般情况下是不启动的。
我们可以通过以下的方式进行查询:
SHOW GLOBAL VARIABLES 对应的是GLOBAL_VARIABLES
SHOW SESSION VARIABLES 对应的就是SESSION_VARIABLES
 
下面给出一条记录做个对比看一下:
 
我们可以看到,其实一个是实例级别的参数,一个是会话级别的参数。要记住一点就是 我们平时用的show variables 是等效与 show session variables.
在这里我们也顺便学习一下,全局变量和会话变量的区别:
系统变量又分为全局变量与会话变量。全局变量在MYSQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.cnf这个文件来更改。
  会话变量在每次建立一个新的连接的时候,由MYSQL来初始化。MYSQL会将当前所有全局变量的值复制一份。来做为会话变量。(也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的。)
  全局变量与会话变量的区别就在于,对全局变量的修改会影响到整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)。我们可以利用show session variables;语句将所有的会话变量输出
以上关于变量的这四张表其实也是内存表,每次系统启动默认从my.cnf读取生成,如果my.cnf没有配置的话就会使用默认值。
PS:其实关于表空间文件那边也应该扩充一下,以后可以学习一下分享出来,今天有点晚了。就分享这么多吧
 

转载于:https://www.cnblogs.com/shengdimaya/p/5824262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值