2019/04/12 MYSQL的存储引擎

多表连接是学习难点,内外链接,左右外链接
三大范式,遵守范式可以让数据库更加精简规范,但是会让我们查询的内容分到多张表,就会用到多表链接

在这里插入图片描述
学生表和课程表
在这里插入图片描述
考试成绩表,课程表
在这里插入图片描述
学生姓名考的课程名称以及分数,三表链接
在这里插入图片描述
还需要查课程名称
在这里插入图片描述
修改成这样
在这里插入图片描述
显示如下
在这里插入图片描述
在这里插入图片描述
如何实现
在这里插入图片描述
先左连接再去union
在这里插入图片描述
学生表和讲师表分别作出然后进行union
在这里插入图片描述
也可以实现
在这里插入图片描述
在这里插入图片描述
如何实现,没有交集,没有老师的学生,没有学生的老师
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
权限
在这里插入图片描述在这里插入图片描述
grant option是授权用户做一件事,这个用户还可以授权给别人
在这里插入图片描述
对于某一个资源有完全的权限ALL PRIVILEGES 或ALL
在这里插入图片描述‘grant是授权在这里插入图片描述
在这里插入图片描述
数据库级别

  • 和*。*应该是一样的
  • 授权某一个数据库db_name
    可以具体到表tbl_name
    routine_name 存储过程,函数

在这里插入图片描述
查询频率
多少个用户selectse

在这里插入图片描述
查询现在mysql数据库里有多少用户
在这里插入图片描述
来指定创建新的用户
在这里插入图片描述
在7的机器上能够登录,说明有时候flush也会自动
在这里插入图片描述
在这里插入图片描述
但是看到的数据库好像不一样
在这里插入图片描述
所以create创建的用户权限是比较小的
想要授权管理hellodb
星点星是所有数据库的所有资源

在这里插入图片描述
就认为是创建两个用户
在这里插入图片描述
wang账户访问优先大权限
在这里插入图片描述
但是输入的密码是centos
在这里插入图片描述
表面上是大权限,但是实际上是小权限的密码
在这里插入图片描述
用户名一样,输入进去,默认得到的是大权限,所以尽量不要去这么设置
现在已经授权了wang用户,但是把一个用户删除

在这里插入图片描述
剩下的用户是大的权限
也可以单独设置他的某些操作

在这里插入图片描述
授权对某个数据库一些权限
在这里插入图片描述
根据刚才授权是可以查询和插入数据
在这里插入图片描述
删除是不行的
在这里插入图片描述![
查插入可以在这里插入图片描述
通过这种授权可以精确到字段
在这里插入图片描述
可以授权某个用户对某个表的某个字段可以查询
新创建用户

在这里插入图片描述
在这里插入图片描述
全选查是不可以的,只能挑着查
在这里插入图片描述
也可以取消权限
在这里插入图片描述
可以查看权限,ALL privileges 是全部权限
在这里插入图片描述
在这里插入图片描述
revoke取消权限,取消delete权限
针对hellodb的删除权限删除

在这里插入图片描述
取消了再来看看权限
就没有了delete
列出的这些就等于这些加上delete等于所有权限ALL PRIVILEGES

在这里插入图片描述
在这里插入图片描述
current_user查看当前用户权限是什么
在这里插入图片描述
这个授权是把信息放到什么地方呢
在这里插入图片描述
查看user表,存放了用户信息
在这里插入图片描述
这些表里有些是存放了用户的授权的
在这里插入图片描述
刚才给某个用户设置了列权限
在这里插入图片描述
查看columns_priv表结构在这里插入图片描述
查看到了授权,对用户授权的列信息是放在这里的
在这里插入图片描述
proc_priv存储过程的权限
在这里插入图片描述
在这里插入图片描述
mysql数据库如果被破坏了,那么授权的信息也没了,所以要加以备份
既然是存在表里,那么就可以通过直接修改表结构的方法来修改权限

在这里插入图片描述
在这里插入图片描述
不用命令的方式,这种操作一般就需要配合flush进行操作,因为不是实时的
在这里插入图片描述
最简单创建用户权限的写法
在这里插入图片描述
通过连接管理模块,让用户可以连接到数据库进行操作
mysql是多线程,要管理线程就是线程管理模块,连接一个用户就要消耗一个线程,所以有一个线程池,通过线程池,当新用户发送请求的时候从线程池中抽取出一个线程来给用户提供服务
还有命令分发器,用户执行指令有一个分发器,不仅要执行指令,还要把一些结果缓存下来
查询缓存模块,查询表里的内容,如果还想要访问,就可以缓存下来,提高速度,不用跑到慢速磁盘上找
日志记录模块,对数据库的操作都有记录,尤其增删改,不记录就有可能造成破坏,比如事务日志,事务要实现ACID特性,才能对日志保持跟踪,保证数据的完整性,没日志怎么撤销
用户管理模块,创建用户
收到命令以后,还需要解析执行
要做优化,对表修改,表维护,去复制,状态模块,查看
还有访问控制权限模块 grant revoke 授权和取消权限
表管理模块,对表里的内容进行增删改
要进行修改的最后还是要体现在磁盘上的,就需要有存储引擎的接口,来负责最后保存到磁盘物理类存储设备来进行交互,不同的存储引擎在磁盘上保存的人家格式是不一样的

在这里插入图片描述
mysql存储引擎是插件式的
在这里插入图片描述
在这里插入图片描述
myisam是系统相对历史悠久的引擎,在教老的版本中默认用的是myisam,号称高性能
在这里插入图片描述
在新一点版本已经用的iinnodb了
在这里插入图片描述
没有事务是比较危险的,加入写数据写了一半停电了,再去重启机器,MYisam就没有任何办法
innodb有事务的日志可以撤销,rollback

在这里插入图片描述
**锁级别
myisam是表级锁, 带来的 就是并发用户访问受到很大的影响
innodb是行级锁,就可以一个改10行, 一个用户改1行,不冲突
粒度越小,越精细,myisam比较粗
mVCC
很重要,可以支持多个用户同时去修改数据,并且不会造成影响
**
在这里插入图片描述
mvcc内部机制是,同时有多个事务操作数据库,
每条数据有创建日期和删除日期

在这里插入图片描述
如果有4号事务在操作数据库,下面的 对于4号,可以看到哪些事务
在这里插入图片描述
事务有隔离性,在4看的时候。56还没发生,所以只能看到123
下面这种情况应该看到什么,145

在这里插入图片描述
全文索引,比如在一个文章里搜一个字符串
在这里插入图片描述
聚簇索引,
在这里插入图片描述
在这里插入图片描述
外键
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
存储引擎是和表相关的不是和库相关的,在创建表的时候要指定表的引擎
在这里插入图片描述
创建表的时候存储引擎的定义
help create table

在这里插入图片描述
一般来讲一个数据库最好放一种存储引擎,不混着用
在mysql库都是用的myisam

在这里插入图片描述
在这里插入图片描述
每个myisam数据库表里的文件都是三个表文件的格式
在这里插入图片描述
在这里插入图片描述
基于myisam创建的脚本
在这里插入图片描述
在这里插入图片描述
需要修改下创建的数据库名字
在这里插入图片描述
有一个myisam
在这里插入图片描述
每个文件都有三个格式的文件
在这里插入图片描述
在这里插入图片描述innodb存储的文件是有一定的要求
在这里插入图片描述
INNODB是存放两个地方,表的定义是frm
数据是存放在ibddata1的

在这里插入图片描述
在这里插入图片描述
都放在一起显然管理很乱,在创建一个hellodb2
在这里插入图片描述
创建之前先看一下大小
在这里插入图片描述
再执行一次查看有没有变化
在这里插入图片描述
是因为18M数据库文件足够放我们的 数据,没有把文件撑大
在这里插入图片描述
在这里插入图片描述
都放在一起管理起来不方便,如果要备份 表就需要把这个就都放在一起
所以我们要把数据库的每张表存放在单独的文件中

在这里插入图片描述
修改配置就可以了
在这里插入图片描述
默认就是ON
在这里插入图片描述
重启服务
在这里插入图片描述
会把以前的数据分到每个文件吗,创建一个3的数据库
在这里插入图片描述
多了个ibd文件在这里插入图片描述
这是推荐的做法
在数据库创建的时候就需要加一下,因为后面加了前面的就不生效了

在这里插入图片描述
在这里插入图片描述
适合的版本
在这里插入图片描述
在这里插入图片描述
版本说明
在这里插入图片描述
生产中建议加上
可以查看否启用 的

在这里插入图片描述
其他的引擎做为了解
在这里插入图片描述
在这里插入图片描述
这个存储引擎给特殊的 使用的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cluster/NDB是做集群用的
blackhole 黑洞引擎,主从复制使用

在这里插入图片描述
但是这样从主服务器同步,压力太大,就可以换下面的方式
中间就可以用blackhole把数据都放在内存里提高速度

在这里插入图片描述
学习数据库存储引擎
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
老版本想要设置INNOdb,就需要加配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改成功
在这里插入图片描述
面试题就会问你聊聊mysql有哪些存储引擎
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值