这个系列的文章主要是为了能够让自己了解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. Thrift 个人实战--Thrift RPC服务框架日志的优化

    前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还 ...

  2. 根据 url请求数据

    public static JSONObject getJsonFromUrl(String url){ CloseableHttpClient httpClient = HttpClients.cr ...

  3. C++ Pirmer : 第十四章 : 重载运算符与类型转换之函数调用运算符与标准库的定义的函数对象

    函数调用运算符 struct test { int operator()(int val) const { return (i > 0 ? i : -i); } }; 所谓的函数调用就是一个类重 ...

  4. hdu4686 Arc of Dream ——构造矩阵+快速幂

    link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = ...

  5. (MST) HDOJ 1102 Constructing Roads

    怎么说呢 这题就是个模板题 但是 hud你妹夫啊说好的只有一组数据呢??? 嗯??? wa到家都不认识了好吗 #include <cstdio> #include <cstring& ...

  6. Nginx-ngx_lua模块原理和内置函数

    ngx_lua模块的原理: 1.每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM:2.将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问:3.每个 ...

  7. linux服务之tuned

    RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-adm,其中 tuned 是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系 ...

  8. 【转】浏览器内核、渲染引擎、js引擎

    [1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...

  9. Android控件之SlidingDrawer(滑动式抽屉)详解与实例

    SlidingDrawer效果想必大家也见到过,它就是1.5模拟器上进入应用程序列表的效果.下面是截图 一.简介 SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它 ...

  10. Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()

    感觉numpy.hstack()和numpy.column_stack()函数略有相似,numpy.vstack()与numpy.row_stack()函数也是挺像的. stackoverflow上也 ...