mysql知识学习

0 mysql的隔离级别有4个,读未提交, 读已提交(rc), 可重复读(rr),串行化,mysql默认的隔离级别时rr

1聚簇索引就是主键索引, 可以一步到位i的索引

   非聚簇索引就是要通过二次查找, 实际存放的是索引和数据的地址, 后面还要同通过数据地址找到数据。

2mysql的binlog记录有3种模式, statement, row, mixed

statement就是记录sql语句的原文, 例如update T set a=now() ,这样在主从复制的时候,就会导致数据的不一致。

row这种记录模式就是记录具体执行的值, 比如sql 执行update T set a=now() 实际会转换为 update T set a=1987499333 这种具体的值,但是有个缺陷,row模式会把批量操作转换为单行,这样比较占用空间。

为了解决上面的2个2问题于是就有了mixd混合模式,自动识别sql是那种类型采用那种模式。

3.mysql的二段性提交。

在执行sql更新时会记录redolog和binlog二个日志, redolog时在事务执行过程中不断写入。而binlog只有在提交事务时才会写入。写入时机不一样,写完redolog后,binlog的写入发生异常时就会导致数据不一致问题。于是就有了mysql的二段性提交。

二段性提交就是mysql会把redolog的写入拆成prepare 和commit  mysql在刚开始写入redolog的时候把redolog设置为准备阶段, 在事务提交后, 写入binlog成功后,再把redolog设置commit阶段,这样写入binlog发生异常也不会影响,mysql根据redolog恢复数据时,发现redolog还处于prepare阶段就会回滚事务。

4.mvcc mysql每次执行事务都会形成一条记录,下次事务执行会把roll_rc 指向上一个事务形成一个版本链,只在rc和rr的隔离级别下有效, 默认rc每一次查询就会建一个新的readView, rr只有第一次查询才会建一个readview,后面的查询都用第一次的readview所以叫可重复读

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值