数据库事务

数据库中的事务,简单来讲就是数据库操作的集合,而它有四个性质,分别是:原子性、隔离性、一致性、持久性。

事务的四大性质

1.原子性:简单来说就是要么事务中的操作全做,要么全部做,不存在只做了一半的状态。映射到显示生活中就是转账的例子。

2.隔离性:多个并发事务之间应该有是隔离的,互不影响的。但是在计算机中可能是交互执行的,所以出现了隔离性级别的概念。

3.一致性:事务的操作让数据库从一个状态转化到另外一个状态,两个状态应该是一致的。例如假如只有2个账户,5000元的钱转来转去,最后两个账户的钱的总和应该还是5000

4.持久性:事务对数据库的操作会保存到磁盘上,就算是宕机,断点,也不会丢失

关于事务的状态转换图:

image_1d7bvq3401fpe1eum1d7qkop1f479.png-69.6kB

 数据库日志

     redo日志:也叫做重做日志(用于系统奔溃之后,恢复脏页用的)

     使用的目的:在InnoDB数据库引擎中,数据从磁盘中读取的最下单位是1页(16kb),那我们为了满足事务的持久性,对数据进行修改时,就要把修改的页刷新到磁盘,就算是非常微小的修改也需要这么做。可是磁盘IO的速度是非常慢的,这么做显然是非常愚蠢的,有什么办法呢?

    办法就是把修改的位置记录下来,这个记录就是redo日志,我们提交事务的时候不必直接把修改的页面刷新到磁盘,而是把redo日志刷新到磁盘就好,redo日志可小的多了。(当然redo日志也有缓冲区,log buffer)

那么redo日志什么时候刷新到磁盘呢?

   1.log buffer 空间不足时

   2.事务提交时

  3.服务器正常关机时

  4.服务器空闲时

  5.后台有特定线程去刷时

 undo日志:因为事务需要回滚,该日志就是把回滚 所需要的信息记录下来

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值