数据库之索引和事务

索引

【索引是一种特殊的文件,包含数据库中所有记录的引用,类似于数组引用下标,通过这个下标就能拿到数组中的数据】
【MySQL数据库插件式的设计,每种索引在不同的存储引擎中的实现都有可能不同】
【存储引擎:对 数据进行增删改查的不同方案】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

explain sql语句

在这里插入图片描述
【经常查询的属性设置为索引】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B-树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B+树(N叉搜索树)

在这里插入图片描述

事务

【若干个sql操作打包为一个整体,实际执行时要么都处理要么都不处理】
【若执行的 过程中出现了突发情况,某些操作执行不下去了。MySQL可以保证突发情况恢复之后,数据没有遭受破坏】
【通过事务“回滚”—roll back操作进行数据的还原—MySQL中的binlog文件实现,记录所有表数据的修改操作】

事务的ACIA(原子性、持久性、隔离性、一致性)

原子性:事务 中最核心的操作

一个 事务中的所有操作,要么全部成功、要么全部失败,(执行失败之后用rollback回滚数据)

持久性:

一个事务执行完成之后,这个事务对数据库的所有修改都永久的(持久化、保存到磁盘上),不会丢失

一致性:

一个事务执行前后的数据都是一种合法的状态,事务永远都是从一个一致性到另一个一致性状态。

隔离性:

多个并发事务访问数据库时, 事务之间是相互隔离的,一个事务不应该被其他事务干扰,不同事务之间相互隔离

普通SQL:一个SQL中执行的操作,MySQL自身可以保证数据并发时的正确性(通过读写锁),若是事务,并发执行就会存在相应的问题

脏读

1、什么是脏读?
事务A在修改数据,事务B读到了事务A修改后的数据,事务A进行了‘回滚’,前面修改的不算数了。事务 B读到的数据就是“脏”数据

不可重复读

同一个事务在多次相同查询后得到的数据不同
【原因】在不同的查询时,其他事务的修改对本事务来说是可见的

事务的三个操作

开启事务
回滚事务
提交事务
在这里插入图片描述

四种隔离级别

在这里插入图片描述
eg.
在这里插入图片描述

幻读

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值