mysql 视图 持久化_数据库学习之MySQL (二十八)——mysql目录、配置、初始自带数据库(一)...

前言 ´・ᴗ・`

继上一次我们学习了事务的处理 控制语言 TCL

本节内容开始 将学习Mysql一些所谓的高级的内容

本节将会帮助你了解…

Mysql目录有哪些 目录与初始数据库简单对应关系

视图的概念

information_schema数据库

mysql数据库

注意 mysql5.6自带数据库有个test 而到了mysql5.7改名为sys

Mysql目录

首先一个误区(好吧我也犯这个错误)

Mysql配置文件并不在安装目录里面 如图 C:\Program Files\MySQL\MySQL Server 5.7

d4a04ebed48608ff5b9b5559014cf34f.png

而是在C:\ProgramData\MySQL\MySQL Server 5.7

068fd7007b878e5921c94e5f82699dd9.png

这里才是存我们感兴趣的数据存储的地方(mysql是持久化的 将信息编码转为文件 存到文件系统的数据库 与redis存到内存不同) 以及配置的地方 而软件目录不过是执行程序存在的地方 换个版本就没了

那么我们试着连接数据库 可见原来就存在4个数据库 如下:

51c3748e038645c0732f7d66d2174e49.png

有意思的是,我们只能找到三个数据库的持久化文件:

6ae7a8cd15a8fa1240ef22b15fab25fc.png

所以information_schema去哪了?这个数据库抽象起来就是数据库 但实际实现形式是视图(view),而不是平常我们常见的基本表(具有实体的表),因此,文件系统上没有与之相关的文件相对应。

所以**视图是啥?**为啥很少听说呢?不常用呢?

视图view

278b44611d558e9a2082994ffc04a4af.png

我们看到这里也有视图二字 其实他确实可以用sql语句创建,而且平常我们就在和类似视图的东西打交道 比如:

我们用 查询一个实体表的所有栏位的所有记录

SELECT* FROM events_stages_summary_by_host_by_event_name;

17f4ce2fc86d33dc8bbb2894ee6a6036.png

查询出来的结果就可以称为视图,

如果多表查询呢?一样 所有查出来的结果你可以理解为是视图

这就是为啥视图没有实体 他是根据别的实体 经过处理(查询操作 加密等)即时运算出来的 而不是本身具有实体存在文件中的

那么下一个问题 这玩意平常查看数据库 用的挺多的啊 不见我们用语句创建视图 使用视图呢?

因为性能

事实上当sql在操作视图时,所有数据都是从其他实体表中查出来的,使用视图并不能优化查询速度。尤其视图一般要发挥作用,自然是要实现多表查询,但是不同表的索引不一定相同,这样会衍生很多问题,牵一发而动全身,表与表之间反而耦合度增加,业务代码写起来很不方便,还降低性能,意义不大(除了方便理解?)

另外,由于数据库软件如mysql将其抽象得和普通实体表一样,无论是操作还是查看的结果,因此在业务代码中我们无法通过sql区分表和视图,这样优化也变得很困难。

当然,视图在特定场合,可以提升一定性能,但是很难把握,感觉我们这些普通人还是别尝试了2333

最后,很蛋疼的是,在mysql的优化器中,视图的代码执行路径与实体表完全不同,无法直观的预测其执行性能。

information_schema数据库

那这个information_schema到底有什么作用呢?

它提供了访问数据库元数据的方式

元数据,关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。

具体来说:

SCHEMATA表:提供了当前mysql实例中所有数据库的信息。这就是show databases的结果

b0b602b0b35860287481d7625f4fe4eb.png

a84b66e1da46c6436cf1f04f925a1046.png

可见 我们常见的mysql命令 其来源就是源于这些information_schema视图 当然做了一定的裁剪

TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。对应show tables from schemaname命令

COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。对应show columns from schemaname.tablename命令

STATISTICS表:提供了关于表索引的信息。对应show index from schemaname.tablename命令

USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。

SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。

TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。

CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。SHOW CHARACTER SET

COLLATIONS表:提供了关于各字符集的对照信息。

COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。SHOW COLLATION

TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

KEY_COLUMN_USAGE表:描述了具有约束的键列。

ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。

VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

mysql

mysql库就是mysql的核心数据库

我们看到,前面的information_schema视图 很多信息又是来源于mysql表 这个表的信息更加根本 是所有配置的根本来源之一,而information_schema可以理解为对mysql的信息进一步处理,封装,使得信息更加人性化(之后自然封装成函数命令来给我们用了)

mysq库主要负责存储数据库的用户、权限设置,以及我们所用的关键字等等,也就是mysql自己需要使用的控制和管理核心信息。而我们常用的,也就是在mysql.user表中修改root用户的密码

有意思的是 mysql还有这两张表:innodb_index_stats、innodb_table_stats 他们的作用和innodb有关:

具体来说,InnoDB 存储引擎提供了两种存储统计数据的方式:持久化(PERSISTENT)与非持久化统计数据(TRANSIENT)

持久化(PERSISTENT)统计数据,存储在 mysql.innodb_index_stats 和 mysql.innodb_table_stats 表中。这种统计数据存储在磁盘上 持久化了(mysql是实体库)

非持久化(TRANSIENT)统计数据,存储在 information_schema.statistics 和 information_schema.tables 中。这种统计数据存储在内存中,当服务器关闭时这些这些统计数据就都被清除掉了,等到服务器重启之后,在某些适当的场景下才会重新收集这些统计数据。

目前持久化的存储统计数据是主流 mysql默认也是持久化的

不过除了dba 貌似没什么人关注mysql库各个表的功能 资料很少

有兴趣的兄弟可以研究一下 我也就碰到问题再解决他们吧

bb03cc5087a1ed9011029af25790daaa.png

总结 ´◡`

Mysql目录有哪些 目录与初始数据库简单对应关系

视图的概念

information_schema数据库

mysql数据库

我的其他专栏 希望能够帮到你 ( •̀ ω •́ )✧

python这么火 想要深入学习python 玩一下简单的应用嘛?

python应用

谢谢大佬支持! 萌新有礼了:)

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值