数据库 事务的特性ACID 事务(Transaction)是并发控制的基本单位。 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执

数据库 事务的特性ACID

事务(Transaction)是并发控制的基本单位。

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。

数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。

原子性:指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。

一致性:指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。

隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。

持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

事务的(ACID)特性是由关系数据库管理系统(RDBMS,数据库系统)来实现的。数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的初始状态。

数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。

MySql事务应用

事务的特征:

Atomicity(原子性)

Consistency(稳定性,一致性)

Isolation(隔离性)

Durability(可靠性)

注意:事务只针对对数据数据产生影响的语句有效。

show engines //查看mysql锁支持的数据引擎。

MyISAM不支持事物,InnoDB支持事物。

默认情况下,MySQL将以自动提交模式运行,这意味着没一条小命令都将当做一个只有一条命令的事物来执行。

如果要让mysql支持支持事务,只需要修改数据引擎(alter table person type=INNODB)。

使用start transaction或者begin命令来开启一个事物,使用commit,或者rollback来结束事物。

事物的结束:事物除了commit,rollback会结束外,使用DDL或者DCL语句也会结束。

保存点:通过保存点机制:用户可以在事物里用savepoint name命令设置一些保存点,以后用户在使用rollback to savepoint name结束事物时,name之前的数据保存,之后的数据不保存。

mysql使用事务的关键字

begin //打开一个事务。

commit //提交到数据库。

rollback //取消操作。

savepoint //保存,部分取消,部分提交。

alter table person type=INNODB //修改数据引擎。

示例:

begin

update person set name='efgh' where id =10

select * from person

rollback

select * from person

示例:

alter table person type=INNODB

begin

update person set name='efgh' where id =10

select * from person

commit

select * from person

begin

delete from person where id=21

update person set name='efgh' where id =10

commit/rollback

针对上面部分提交,必须用到保存点。

事务保存点注意:

1.只能取消到某个保存点 rollback to savepoint p1。

2.不能提交某个保存 commit to savepoint p2//错误写法。

3.最后commit 把未取消的保存点去不提交到数据。

事务保存点使用例子:

begin;

update score set score=40 where scoreid=1;

savepoint s1;

update score set score=50 where scoreid=2;

select * from score;

rollback to savepoint s1;

select * from score;

commit;

关于MySQL事务的操作就介绍到这里,如果您想了解更多关于MySQL数据库的知识,可以看一下这里的文章:http://database.51cto.com/mysql/,相信一定不会让大家失望的!

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

mysql事物 总结_Mysql事务总结相关推荐

  1. spring mysql事物级别_mysql事务级别和spring中应用

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  2. 什么是mysql事物定义_Mysql事务原理

    1. 什么是数据库事务 1.1 事务的应用场景 电商平台中例如常见的下单流程,会同时操作订单表,库存表等,有时候这些操作要在一个事务里面完成.还有金融系统业务的银行转账,需要保证一个账户增加另一个账户 ...

  3. mysql事物介绍_MySQL事务介绍

    从事务理论的角度来说,可以把事务分为以下几种类型: 扁平事务类型(Flat Transaction) 带有保存点的扁平事务(Flat Transaction with Savepoints) 链事务( ...

  4. mysql ib_logfile 数量_Mysql 事务日志(Ib_logfile)

    mysql的innodb中事务日志ib_logfile(0/1) 概念: 事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开 ...

  5. mysql+nest+嵌套事务_MySQL——事务

    事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致状态转换为另一种一致状态. 关键词事务四大特性ACID MySql事务隔离级别 MVCC多版本并发控制实现方 ...

  6. 什么是mysql事物定义_MySQL中事务概念的简洁学习教程

    事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务. 事务具有四个特性:原子性(Atomici ...

  7. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

  8. mysql特性举例_MySQL事务的四大特性和隔离级别

    1.事务的四大特性(ACID) #### 1.1.原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体. 1.2 ...

  9. java mysql实现原理_MySQL事务实现原理

    MySQL事务隔离级别的实现原理 知识储备 只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修改.这会带来脏 ...

最新文章

  1. 开发日记-20190519 关键词 Linux学习路径
  2. graph 关系图 设置
  3. Android入门之AlertDialog
  4. Windows7 Credential Manage
  5. Oracle-查看oracle是否有表被锁
  6. 解决 JSP 页面报错 equal symbol expected
  7. Spring框架学习笔记07:基于XML配置方式使用Spring MVC
  8. 完全没法比!华为P40 Pro和iPhone 9宣传视频同曝光
  9. 4.4GDI基本图形
  10. How to shrink disk for KVM
  11. python yield理解_Python3 中 Yield 理解与使用
  12. 计算机建模报告,计算机三维建模及分析实验报告单.doc
  13. 解析库之——beautifulsoup
  14. 数据预处理第3讲:归一化与离散化
  15. python安装pygame教程_Pygame安装教程
  16. 【服务器】揭秘淘宝286亿海量图片存储与处理架构
  17. Chrome浏览器语音自动播放功能
  18. Excel图表制作(二):滚动条实现动态图表
  19. 55400-73-2,Ms-PEG5-Ms含有两个甲磺酸基部分的PEG连接物
  20. Linux 中的rsh,ssh

热门文章

  1. 【原创】PostgreSQL 增量备份详解以及相关示例
  2. mysql 设置编码
  3. a different object with the same identifier val...
  4. 忘记Oracle中System和Sys密码的解决办法
  5. 数字化转型将迎提速黄金期,金融行业如何转型?
  6. CLEARTEXT communication to xxx not permitted by network security policy
  7. 使用SourceTree拉取代码出现Permission denied (publickey)
  8. 基于gulp的前端脚手架(二)
  9. 运维自动化轻量级工具pssh
  10. CentOS升级gcc到4.8.2以支持C++11标准的方法