zoukankan      html  css  js  c++  java
  • mysql之事务

    引入事务的目的:事务会把数据库从一种一致状态转换成另一个一致状态。在数据库提交工作时,可以确保要么所有的修改都已经保存了,要么所有修改都没有保存

    事务的特性

    原子性:原子性是指整个数据库事务是不可分割的工作单位,只有使事务中所有的数据库操作执行成功,才算是整个事务成功。
    一致性:是指事务将数据库从一种状态转变为下一种一致的状态。在事务的开始之前和事务的结束之后,数据库的完整性约束没有被破坏。
    隔离性:一个事务的影响在该事务提交前对其他事务都不可见(这是通过锁来实现的)
    持久性:事务一旦提交,结果就是永久性的,即使发生死机等故障,数据库也能将数据恢复

    事务的实现

    原子性,一致性,持久性通过数据库的redo和undo来完成
    【redo】
    事务日志通过重做(redo)文件和innodb存储引擎的日志缓冲来实现。当开始一个事务的时候,会记录该事务的一个日志序列号,当事务执行的时,会往innodb存储引擎的日志缓冲里插入数据;当事务提交时,必须将innodb存储引擎的日志缓冲写入磁盘。也就是说写数据之前,先写日志,这种日志称为预日志方式
    Innodb存储引擎通过于写日志方式来保证事务的完整性,这意味着磁盘上存储的数据页和缓冲页是不同步的,对于内存缓冲中的页的修改,先是写入重做日志文件,然后再写入磁盘,因此是一种异步的方式
    【undo】
    利用undo信息可以将数据回滚到修改之前的样子。Redo存放在重做日志文件中,undo存放在数据库内部的一个特殊段。Undo段位于共享表空间

  • 相关阅读:
    微信公众号开发的时候code失效的问题
    微信公众平台测试号通过网页授权获取用户的信息
    做了一些mysql的习题 感觉用来应付面试是足够了
    springMVC在使用重定向跳转
    jsp获取标签数据
    再来一次atm机 用文本做的
    django mysql数据库配置
    django url控制器
    django初始要做的事情
    flask学习
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5692544.html
Copyright © 2011-2022 走看看