information_schema系列二(列,列权限,事件,存储引擎)

这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益。

1:COLUMNS

老规矩。查一下这个表,看一下记录,由于这个是看表的结构的我们就拿qiandai数据库的一张表作为例子。

[email protected] [information_schema]>select * from COLUMNS where TABLE_SCHEMA=‘qiandai‘ and TABLE_NAME= ‘articles‘\G;

*************************** 1. row ***************************

TABLE_CATALOG: def

TABLE_SCHEMA: qiandai

TABLE_NAME: articles

COLUMN_NAME: FTS_DOC_ID

ORDINAL_POSITION: 1

COLUMN_DEFAULT: NULL

IS_NULLABLE: NO

DATA_TYPE: bigint

CHARACTER_MAXIMUM_LENGTH: NULL

CHARACTER_OCTET_LENGTH: NULL

NUMERIC_PRECISION: 20

NUMERIC_SCALE: 0

DATETIME_PRECISION: NULL

CHARACTER_SET_NAME: NULL

COLLATION_NAME: NULL

COLUMN_TYPE: bigint(20) unsigned

COLUMN_KEY: PRI

EXTRA: auto_increment

PRIVILEGES: select,insert,update,references

COLUMN_COMMENT:

GENERATION_EXPRESSION:

*************************** 2. row ***************************

我们可以通过TABLE_SCHEMA和TABLE_NAME定位到某一张表进行查看,这样还是很方便能看到一张表的记录的,不过如果要查看表结构的话我们一板也可以通过以下两种方式查看:

show create table tablename

desc tablename

以上两种方式都可以满足基本的查看表结构的需求,为什么还要有一张系统表来记录呢,首先这个表更加的全面,其次MySQL本身内部也是要有一个统计信息来统计列的。我们看一下这个表记录的信息,字段名,所属于的类型,属于哪张表,在表中创建的时候排序是第几位等信息。贴一下官网对于这张表的解释:

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG   def
TABLE_SCHEMA    
TABLE_NAME    
COLUMN_NAME Field  
ORDINAL_POSITION   see notes
COLUMN_DEFAULT Default  
IS_NULLABLE Null  
DATA_TYPE Type  
CHARACTER_MAXIMUM_LENGTH Type  
CHARACTER_OCTET_LENGTH    
NUMERIC_PRECISION Type  
NUMERIC_SCALE Type  
DATETIME_PRECISION Type  
CHARACTER_SET_NAME    
COLLATION_NAME Collation  
COLUMN_TYPE Type MySQL extension
COLUMN_KEY Key MySQL extension
EXTRA Extra MySQL extension
PRIVILEGES Privileges MySQL extension
COLUMN_COMMENT Comment MySQL extension
GENERATION_EXPRESSION   MySQL extension

CHARACTER_OCTET_LENGTH 和CHARACTER_MAXIMUM_LENGTH大部分情况是相同的,除非是多字节字符集,一般情况下,了解这些信息也算足够一个DBA是用了,不过个人还是比较建议使用desc来查看表结构。

2:COLUMN_PRIVILEGES

我们看一下授权信息:

第一步:授权

grant select on qiandai.articles(title) to ‘replication‘@‘%‘;

授权以后就会有信息出现了,一般情况这个表是空的。

[email protected] [information_schema]>select * from COLUMN_PRIVILEGES limit 10;

+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+

| GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |

+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+

| ‘replication‘@‘172.16.88.42‘ | def | qiandai | articles | title | SELECT | NO |

+------------------------------+---------------+--------------+------------+-------------+----------------+--------------+

我们这样看的话很清楚就能看到表授权的用户的对象,那张表那个库以及授予的是什么权限,如果授权的时候加上with grant option的话,我们可以看得到PRIVILEGE_TYPE这个值必须是YES,筛选的时候可以根据TABLE_NAME 和COLUMN_NAME 进行筛选,比如:

select * from COLUMN_PRIVILEGES where TABLE_NAME =‘’ and COLUMN_NAME=‘’;

3:ENGINES

老规矩看一下数据

[email protected] [information_schema]>select * from ENGINES limit 10;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |

| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |

| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |

| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |

| MyISAM | YES | MyISAM storage engine | NO | NO | NO |

| CSV | YES | CSV storage engine | NO | NO | NO |

| ARCHIVE | YES | Archive storage engine | NO | NO | NO |

| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |

| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

引擎类型,是否支持这个引擎,描述,是否支持事物,是否支持分布式事务,是否能够支持事物的回滚点。这个就比较简了。不过多的解释了。

4:EVENTS

看一下记录吧筒子们,我只查询一条就可以了,因为这个记录的是MySQL的事件,一般情况我们是很少使用事件的,中间有一些加*因为是涉及到公司的东西,不过会解释一下,在后面标注上汉字解释。

mysql> select * from EVENTS limit 1\G;

*************************** 1. row ***************************

EVENT_CATALOG: def

EVENT_SCHEMA: ******所在的数据库

EVENT_NAME: name 事件的名字

DEFINER: root 哪一个用户定义的这个事件

TIME_ZONE: SYSTEM 该事件的时区,这是用于调度事件的时区,这是有效的事件中,因为它执行。默认值是系统。

EVENT_BODY: SQL MYSQL5.7这个记录统一为SQL

EVENT_DEFINITION: call day_statistic() 表示事件要做什么操作,这个很好理解,就是启动day_statistic这个方法,做一系列的处理

EVENT_TYPE: RECURRING 本次活动的重复类型,是ONE TIME(瞬态)或重复(重复) 。

EXECUTE_AT: NULL 单次的话就是定义的时间或最后一次修改事件,如果事件的时序由一个EVERY子句代替AT子句值就是NULL

INTERVAL_VALUE: 1 对于周期性事件,该列包含事件的EVERY子句的数字部分。

INTERVAL_FIELD: DAY 对于周期性事件,该列包含管理事件的时机了EVERY子句的单位部分。如年月日天等

SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

STARTS: 2016-08-16 01:00:00 对于重复发生的事件,其定义包括STARTS子句,该列包含相应的DATETIME值。

ENDS: NULL

STATUS: ENABLED 有以下三个值 ENABLED, DISABLED, or SLAVESIDE_DISABLED.

ON_COMPLETION: NOT PRESERVE 是保留还是不保留

CREATED: 2016-08-15 05:11:12

LAST_ALTERED: 2016-08-15 05:11:12

LAST_EXECUTED: 2016-08-28 01:00:00

EVENT_COMMENT: 注释文本

ORIGINATOR: 1 在其上创建事件的MySQL服务器的服务器ID,也就是server ID ;在复制中使用。缺省值是0

CHARACTER_SET_CLIENT: utf8

COLLATION_CONNECTION: utf8_general_ci

DATABASE_COLLATION: utf8_general_ci

1 row in set (0.00 sec)

好了,我们已经解释完了,接下来看一下创建一个事件怎么创建吧,也就给个例子:

CREATE DEFINER=`root`@`%` EVENT `money_day_statistic` ON SCHEDULE EVERY 1 DAY STARTS ‘2016-08-16 01:00:00‘ ON COMPLETION NOT PRESERVE ENABLE DO call day_statistic()

这个语句就是对应上面的查询语句。

最后看一下上面的表结构:

COLUMNS,EVENTS的存储引擎是MyISAM,这是为了长久的保存,不能够重启后就没有啊

COLUMN_PRIVILEGES,ENGINES的存储引擎是MEMORY,引擎也是一样的按照版本自动可以生成,至于列为什么会是MEMORY,我想大概是因为这样对于权限的控制都是在MySQL的SQL层。每次重启应该是会从其他user表读取到内存,所以他只是在SQL层做一些控制。大概就是这个样子。

时间: 2024-10-12 08:51:29

information_schema系列二(列,列权限,事件,存储引擎)的相关文章

MySQL列属性约束及存储引擎

列属性约束,保证表的结构和数据的正确性和稳定性. 总的来说有五种:唯一性和主键约束.外键约束.检查约束.空值约束.默认值约束. 五大关键词:UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT 是否为空 规定一个字段的值,是否可以是null. null(默认) 或 not null Null表示没有值.与任何数据不同.表示什么都没有. 如果一个列不允许为空,但是在赋值时,没有为该字段赋值,则会出现问题. Mysql的每条记录,如果存在

(DBA之路【二】)mysql 主流存储引擎的特点

innoDB存储引擎: 如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB. 优点:(1) innodb存储引擎该mysql表提供了事务(事务有原子性以及一致性,这样保障数据安全,全步对才对),回滚以及系统崩溃修复能力(断电或者异常前能够自动保存数据)和多版本迸发控制的事务的安全.大尺寸的数据集趋向于选择InnoDB方式,因为其支持事务处理和故障恢复,INNODB通过事务日志来恢复数据. (2)innodb存储引擎支持外键(foreign key)这个很好用,表可以级

IBM规则引擎(ODM)入门系列二(3):规则引擎客户端创建

最近太忙,今天终于可以抽出时间来更新,有几位博友一直关注,所以我一定会更新. 前面讲了很多,包括如何创建规则项目,如何编写规则集,如何安装res服务及发布规则包,但是做了这么多好像还是不知道如何在我们的应用中调用或使用我们创建的规则项目,那么今天,在这里一起看看,可以使用什么方式来在我们自己的应用中使用规则项目. 其实规则项目的发布有两种方式,一种是发布到文件系统中,也就是发布到一个文件夹下面,另一种是发布到数据库. 如何在自己的应用中调用规则?也有两种方式,一种是创建本地客户端,然后集成进我们

数据库事务管理及存储引擎

http://blog.csdn.net/xiaoyu714543065/article/details/8211265 事务具有四个特征:原子性( Atomicity ).一致性( Consistency ).隔离性( Isolation )和持续性( Durability ).这四个特性简称为 ACID 特性. MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默认引擎,可以修改配置文件中的default-stor

MySQL详解(2)----------存储引擎

存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能. 例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎.内存存储引擎能够在内存中存储所有的表格数据.又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力). 这 些不同的技术以及配套的相关功能在MySQL中被称

Mysql ==》 存储引擎

一.什么是存储引擎? mysql中建立的表==>文件夹 库中建立的表==>文件 现实生活中我们用来存储数据的文件应该有不同的类型: 比如: 存文本用的txt类型,存表格用的excel,存图片png等. 数据库中的表也应该有不同的类型,表的类型不用,回对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据?如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法,因为关系数据库中 数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型

MySQL 温故而知新--Innodb存储引擎中的锁

近期碰到非常多锁问题.所以攻克了后,细致再去阅读了关于锁的书籍,整理例如以下:1,锁的种类 Innodb存储引擎实现了例如以下2种标准的行级锁: ? 共享锁(S lock),同意事务读取一行数据. ?  排它锁(X lock).同意事务删除或者更新一行数据. 当一个事务获取了行r的共享锁.那么另外一个事务也能够马上获取行r的共享锁,由于读取并未改变行r的数据.这样的情况就是锁兼容. 可是假设有事务想获得行r的排它锁,则它必须等待事务释放行r上的共享锁-这样的情况就是锁不兼容.二者兼容性例如以下表

sql 入门经典(第五版) Ryan Stephens 学习笔记 后续——存储引擎

一.引擎基础 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎两种方法: a.show table status from database_name where name='table_name'; b.show create table table_name; 查看使用的默认引擎: show variables like 'default_storage_engine';  //MySQL5.5以后默认使用InnoDB存储引擎, 如果显示的格式不好看,可以用\

理解存储引擎

一.什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等. 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表