这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益。
1:KEY_COLUMN_USAGE
按照官方的解释,这个表描述的是关于有约束的列。也就是没有约束的列都不会显示出来,按照整库查了一下,我里面有五张表,结果这个库记录的只有一条信息。因为只有这个列有约束,其他几张表都是测试玩的,并没有什么约束。
我现在创建两张表主键外键关联关系,然后查一下记录:
看一下就很是明朗了有没有,test1的ID只是主键,后面的关联就会显示NULL,TEST2的外键就很能说明问题了,关联的那个表的那个键,自己是外键,以及在那个schema等,记住有一点就是ORDINAL_POSITION这个指的不是创建表时候列的顺序,而是这个约束的排序。信息还是很全面的。很多时候我们就可以根据这个直接去查询表的关联关系,而不需要在看表结构等信息。这个还是很不错的。查看某个表的关联关系很简单,根据TABLE_NAME列进行筛选就可以了。
 
2:INNODB_SYS_COLUMNS 和INNODB_SYS_TABLES
INNODB_SYS_COLUMNS 这个系统表存放的是INNODB的元数据, 他是依赖于SYS_COLUMNS这个统计表而存在的。
这两张表可以做个联合查询,就一块说了把,查看的就是TEST1表的所有列。用着还算是可以的。
select A.*, B.NAME from INNODB_SYS_TABLES AS A,INNODB_SYS_COLUMNS AS B WHERE A.TABLE_ID=B.TABLE_ID AND A.NAME LIKE '%TEST1%';
也可以按照下面的进行查询:
select A.name, B.* from INNODB_SYS_TABLES AS A,INNODB_SYS_COLUMNS AS B WHERE A.TABLE_ID=B.TABLE_ID AND A.NAME LIKE '%TEST1%';
个人感觉还是通过第二种查询起来还是比较好的。因为看出来直接看到表的列以及长度还是很不错的不是吗。
指的看的一点是INNODB_SYS_COLUMNS 的MTYPE和PRTYPE这两个列
MTYPE的对应关系看一下:
1 = VARCHAR, 2 = CHAR, 3 = FIXBINARY, 4 = BINARY, 5 = BLOB, 6 = INT, 7 = SYS_CHILD, 8 = SYS, 9 = FLOAT, 10 = DOUBLE, 11 = DECIMAL, 12 = VARMYSQL, 13 = MYSQL, 14 = GEOMETRY.
PRTYPE这个列是一个二进制的编码,表示了INNODB的精确数据类型,字符集编码和能不能为NULL.
INNODB_SYS_TABLES 这张表依赖的是SYS_TABLES数据字典中拉取出来的。此表提供了有关表格的格式和存储特性,包括行格式,压缩页面大小位级别的信息(如适用)。下面看一下官网给的解释:
Column name Description
TABLE_ID 所有的表自增排序的一个序号,每个表都是唯一的
NAME 表名字
FLAG This value provides bit level information about table format and storage characteristics including row format, compressed page size (if applicable), and whether or not the DATA DIRECTORY clause was used with CREATE TABLE or ALTER TABLE.
N_COLS The number of columns in the table. The number reported includes three hidden columns that are created by InnoDB (DB_ROW_ID,DB_TRX_ID, and DB_ROLL_PTR). The number reported also includes generated virtual columns, if present.
SPACE An identifier for the tablespace where the table resides. 0 means the InnoDB system tablespace. Any other number represents either a file-per-table tablespace or a general tablespace. This identifier stays the same after a TRUNCATE TABLE statement. For file-per-table tablespaces, this identifier is unique for tables across all databases in the instance.
FILE_FORMAT The table's file format (Antelope or Barracuda).
ROW_FORMAT The table's row format (Compact, Redundant, Dynamic, or Compressed).
ZIP_PAGE_SIZE The zip page size. Only applies to tables that use the Compressed row format.
SPACE_TYPE The type of tablespace to which the table belongs. Possible values include System (for the InnoDB system tablespace), General (for InnoDBgeneral tablespaces created using CREATE TABLESPACE, and Single (for InnoDB file-per-table tablespaces). Tables assigned to the system tablespace using the CREATE TABLE or ALTER TABLE TABLESPACE=innodb_system clause have a General SPACE_TYPE. TheSPACE_TYPE column was added in MySQL 5.7.6 with the introduction of InnoDB general tablespaces. For more information, see CREATE TABLESPACE.
通过这两张表可以查看表的基本信息和表对应的列的信息。还是比较方便的。
 
3:OPTIMIZER_TRACE
这个表就比较6了,提供的是优化跟踪功能产生的信息。不过这个功能默认是不开启,我们要设置开启才能看得到,下面看一下怎么开启:
# Turn tracing on (it's off by default): SET optimizer_trace="enabled=on"; SELECT ...; # your query here SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; # possibly more queries... # When done with tracing, disable it: SET optimizer_trace="enabled=off";
上面是官网给的例子我们不要太在意,我们看一下自己的例子:
SET GLOBAL optimizer_trace="enabled=on";
做两三次查询:
然后再去查询就会有记录了,但是千万记住,为什么默认是是关闭的呢。因为这个东西很小奥性能,你想一下,你每做一次查询,查询的所有信息都要被记录下来。这不是非常的消耗性能吗。对服务器来说是一种负担,所以说一般情况下不要开启这个功能。只有当我们需要查询性能问题的时候才能开一下。另外,贴一下查询结果,太长了,截取一段就好了。
 
以后我们会详细看一下跟踪这个功能,因为数据库的优化的话必须是要有充足的信息的,所以说我们一定要学号跟踪,我打算下周花一周时间把跟踪学习一下,然后给大家分享一下。明天在看几个比较简单的系统表。下周好好学习一下跟踪。
 

information_schema系列四(跟踪,列约束,表和列)的更多相关文章

  1. SQLLoader4(数据文件中的列与表中列不一致情况-filler)

    A.数据文件中字段个数少于表中列字段个数,但数据文件中缺少的列,在表定义中可以为空.----- 这种情况是比较简单的,只需要将数据文件中数据对应的列的名字写到控制文件中即可.因为SQL*Loader是 ...

  2. gridiew列求和,表的列求和,表的记录数,时间段查询

    下面求的是gridview中第5列的值,并在lable1中显示 protected void Page_Load(object sender, EventArgs e)    {        int ...

  3. information_schema系列六(索引,表空间,权限,约束相关表)

    information_schema系列六(索引,表空间,权限,约束相关表) 1: STATISTICS 这个表提供的是关于表的索引信息:   INFORMATION_SCHEMA Name SHOW ...

  4. Oracle表、列、约束的操作

    获得有关表的信息 可以直接DESCRIBE DESC[RIBE] table_name; 可以通过数据字典 SELECT * FROM user_tables WHERE table_name =xx ...

  5. BootStrap 智能表单系列 四 表单布局介绍

    表单的布局分为自动布局和自定义布局两种: 自动布局就是根据配置项中第二级配置项中数组的长度来自动使用不同的bootstrap栅格,通过设置autoLayout为true可以实现自动布局 自动以布局就是 ...

  6. RX系列四 | RxAndroid | 加载图片 | 提交表单

    RX系列四 | RxAndroid | 加载图片 | 提交表单 说实话,学RxJava就是为了我们在Android中运用的更加顺手一点,也就是RxAndroid,我们还是先一步步来,学会怎么去用的比较 ...

  7. [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率

    首先,介绍下关于InnoDB引擎存储格式的几个要点:1.InnoDB可以选择使用共享表空间或者是独立表空间方式,建议使用独立表空间,便于管理.维护.启用 innodb_file_per_table 选 ...

  8. flask系列四之SQLAlchemy(二)表关系

    一.SQLAlchemy外键约束 1.创建外键约束表结构 目标:建立两个表“用户表(user)”和“问题表( question)”,其中问题表中的作者id是是用户表的id即外键的关系.(一个用户可以有 ...

  9. information_schema系列三(文件,变量)

    这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:FILES 这张表提供了有关在MySQL的表空间中的数据存储的文 ...

随机推荐

  1. 限制文本框只能输入数字或浮点数的JS脚步

    1.oninput,onpropertychange,onchange的用法 l          onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本 ...

  2. Linux TC流量控制HOWTO中文版

    <本文摘自Linux的高级路由和流量控制HOWTO中文版 第9章节>网人郭工进行再次编译: 利用队列,我们可以控制数据发送的方式.记住我们只能对发送数据进行控制(或称为整形).其实,我们无 ...

  3. H5版俄罗斯方块(3)---游戏的AI算法

    前言: 算是"long long ago"的事了, 某著名互联网公司在我校举行了一次"lengend code"的比赛, 其中有一题就是"智能俄罗斯方 ...

  4. maven项目修改java编译版本的方式

    背景 使用 maven 3.x 安装到本地后,创建的项目一般都是基于JDK1.5版本.而目前大多数的项目已经升级到1.6或以上,尤其是Servlet3.0 已经要求Java6或以上版本的环境,往往需要 ...

  5. Fatal error: Call to undefined function imagettftext()解决办法

    Fatal error: Call to undefined function imagettftext()解决办法   我的问题是php编译安装时指定了gd的目录,其实不用指定.就可以了 博客分类: ...

  6. Js操作DOM小练习_01

    1.页面引入jQuery文件和bootstrap文件: 2.贴上代码 <!DOCTYPE html> <html lang="en"> <head&g ...

  7. DOM节点访问

    简而言之,DOM(即文档对象模型)是一种将XML或HTML文档解析成树形节点的方法.通过DOM的方法与属性,我们就可以访问到页面中的任何元素,并进行元素的修改.删除以及添加的操作.同时,DOM也是一套 ...

  8. [ActionScript 3.0] AS3.0 Socket通信实例

    以下类是充当Socket服务器的例子 package { import flash.display.Sprite; import flash.events.Event; import flash.ev ...

  9. Win32编程:窗口类样式+窗口外观样式+窗口显示样式

    1.窗口类样式WNDCLASS.style CS_VREDRAW 提供窗口位置变化事件和高度变化事件的处理程序,功能是重绘窗口 CS_HREDRAW 提供窗口位置变化事件和宽度变化事件的处理程序,功能 ...

  10. OFBIZ:启动之StartupLoader

    任意一个JAVA程序都是从main()开始启动的,OFBIZ也不例外.OFBIZ的main()位于framework/start/src/org/ofbiz/base/start/Start.java ...