数据库—mysql

提示:以下是本篇文章正文内容

一、InnoDB

InnoDB 内部做了很多优化,包括从磁盘读取数据时采用的可预测性读,能够自动在内存中创建 hash 索引以加速读操作的自适应哈希索引,以及能够加速插入操作的插入缓冲区等。

InnoDB 支持真正的在线热备份,MySQL 其他的存储引擎不支持在线热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合的场景中,停止写入可能也意味着停止读取。

二、事务

什么是事务?

要么全部成功,要么全部不执行。
事务是指满足ACID特性的一组操作,可以通过Commit提交一个事物,也可以使用Rollback进行回滚

三、事务的ACID

事务的ACID分别是:

  • Atomicity:原子性
  • Consistency:一致性
  • Isolation:隔离性
  • Durability:持久性

原子性:
事务被视为不可分割的最小单元,事务的所有操作要么全部成功,要么全部失败回滚。

一致性:
数据库在事务执行前都保持一致性状态,在一致性状态下,所有事务对一个数据的读取结果都是相同的

隔离性:
一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢。

ACID之间的关系:

事务的ACID特性概念很简单,但不好理解,主要是因为这几个特性不是一种平级关系:

  • 只有满足一致性,事务的结果才是正确的。
  • 在无并发的情况下,事务串行执行,隔离性一定能够满足。此时只要能满足原子性,就一定能满足一致性。在兵法的情况下,多个事务并行执行,事务不仅要满足原子性,还要满足原子性,还要满足隔离性,才能满足一致性。
  • 事务满足持久化是为了能应对数据库崩溃的情况。 这里是引用
    在这里插入图片描述

四、隔离级别

读未提交:事务的修改,即使没有提交,对其他事务也算是可见的
读提交:一个事务只能读取已经提交的事务所做的修改。换句话说,一个事物所做的修改在提交前对其它事务是不是可见的。
可重读:保证在同一个事务中多次读取同样数据的结果是一样的
可串行化:强制事务串行执行,需要加锁实现,而其它隔离级别通常不需要:在这里插入图片描述

脏读:
脏读指的是不同事务下,当前事务可以读取到另外事务未提交的数据

不可重复读:
不可重复读指的是同一事务多次读取同一数据集合,读取到的数据是不一样的情况

幻读:
幻读是一种特殊的不可重复读

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值