mysql的MyISAM和InnoDB对比,主从复制原理

mysql的锁机制 在这里插入图片描述

MyISAM存储引擎下,使用表锁,偏读

读锁 读共享,写堵塞
为session_1加读锁 lock table mylock read
session_1可查询该表记录,其他session也可以
session_1不可以查询其他未加锁的表,其他session可以修改或查询未锁定的表
当前session_1修改锁定表都会提示错误,其他session修改会一直等待锁,堵塞
session_1释放锁,其他session获得锁,操作完成
写锁 读写都堵塞
为session_1加读锁 lock table mylock write
session_1可curd,其他session什么都不能做,都会被堵塞
总结:简而言之,就是读锁会阻塞写,但是不会堵塞读,而写锁则会把读和写都堵塞

innoDB存储引擎(acid)

隔离级别 脏读 不可重复读 幻读
未提交读(read uncommitted)是 是 是
已提交读(read committed) 否 是 是
可重复读(repeatable read) 否 否 是
可序列化(serializable) 否 否 否

更新丢失:没有事务的存在两个人同时修改同一文件
脏读:A事务还没提交,B事务读到了A事务没提交的数据,如果A回滚了,就形成了脏读,针对修改
不可重复读:A事务中读取了的数据,此时B正提交数据,此时A事务再次读取数据前后两次不一致
幻读:脏读是事务B里面修改了的数据,幻读是事务B里面新增了数据,针对插入

无索引 行锁变表锁
vachar类型插入int类型索引就会失效,虽然mysql有类型转换,
但是,大大降低性能
间隙锁
当我们用范围条件而不是想等条件检索数据,并请求共享或排它锁时,
InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在
条件范围内但不存在的记录,叫做“间隙(GAP)”,InnoDB也
会对这个“间隙”加所,这种锁机制就是所谓的间隙锁

主从复制在这里插入图片描述

MySQL复制过程分为三步
1、master将改变记录到二进制日志(binary log)。记录过程叫做二进制日志事件,binary log events;
2、slave将master的binary log events拷贝到它的中继日志(relay log);
3、slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL
复制是异步的且串行化的。

三范式

第一范式:所有字段值都是不可分解的原子值
满足第一范式不一定满足第二范式
第二范式:也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
满足第二范式不一定满足第三范式
第三范式:每一列数据都和主键直接相关,而不能间接相关。
所以第一范式,第二范式,第三范式都是有区别的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值