事务的任务是保证一系列更新语句的原子性,锁的任务是解决并发访问可能导致的数据不一致问题。如果事务与事务之间存在并发操作,此时可以通过隔离级别实现事务的隔离性,从而实现数据的并发访问。

原子性(Atomicity)

原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败。

2 一致性(Consistency)

事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

3 隔离性(Isolation)

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability)

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

  MySQL数据库中支持事务的存储引擎有InnoDB和BDB,MyISAM和MEMORY存储引擎不支持事务,而InnoDB存储引擎事务主要通过UNDO日志和REDO日志实现。

1,重做日志(也叫REDO日志

事务在执行时需要将执行的事务日志写入到日志文件里,对应的日志文件为重做日志(安装编译后产生ib_logfile0,ib_logfile1,默认大小为5MB,建议设置512M以便容纳较大的事务)。当sql进行数据库更新操作时,首先将重做日志写入到日志缓冲区,客户端执行commit命令提交时,日志缓冲区的内容会被刷新到磁盘,日志缓冲区的刷新方式或者时间间隔可以通过参数innodb_flush_log_at_trx_commit控制。以下是重做日志相关参数介绍:

MySQL在物理文件备份时需要复制该文件,以及在奔溃恢复以及重新执行重做日志中的记录。

2,回滚(UNDO)日志
与REDO日志相反,UNDO日志主要用于事务异常时的数据回滚,具体是复制食物前的数据库内容到UNDO缓冲区,在合适的时间将内容刷新到磁盘。UNDO日志均放在表空间.ibd数据文件中。

 

 

最新文章

  1. 修改nw.js的exe文件使其请求管理员权限
  2. 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图
  3. (七)DAC0832 数模转换芯片的应用 以及运算放大器的学习 01
  4. centreon 降低rrd磁盘读写
  5. C#获取当前路径的方法
  6. I/O小总结
  7. 用css3做标签
  8. C# web访问mysql数据库-整理归纳总结
  9. Python的if判断与while循环
  10. mybatis面向接口的编程
  11. (转)如何在maven的pom.xml中添加本地jar包
  12. Java的原始类型自动包装与解包机制
  13. oracle ORA-00917: missing comma 是因为少逗号
  14. 开始使用vue和vuetify
  15. asp.net excel导出去除科学计数法的表示格式
  16. JS UNIX 时间戳与时间格式转换
  17. VS中快捷键修改以及快捷键的查看
  18. FlashDevelop导入swc库
  19. InfluxDB 的卸载与重装
  20. 商业模式画布模板——From 《商业模式新生代》

热门文章

  1. Spring + Struts + Hibernate 简单封装通用接口
  2. LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)
  3. 获取访问用户的客户端IP(适用于公网与局域网).
  4. Oracle备份与恢复详解
  5. Vue全局组件创建三种方法
  6. mysql驱动包
  7. Linux学习(一):常用命令
  8. 2.Redis安装和简单使用
  9. html5学习之路_007
  10. Python 每日一练 | Flask 实现半成品留言板