事宜(transaction)
- 事宜是指逻辑上的一组操纵,构成这组操纵的各个单位,要不全乐成要不全失败。
- - 支持持续SQL的集团乐成或集团取消。
- - 事宜是数据库在数据晚自习方面的一个成果。
- - 必要操作 InnoDB 或 BDB 存储引擎,对自动提交的特征支持完成。
- - InnoDB被称为事宜安详型引擎。
- -- 事宜开启
- START TRANSACTION; 可能 BEGIN;
- 开启事宜后,全部被执行的SQL语句均被认作当前事宜内的SQL语句。
- -- 事宜提交
- COMMIT;
- -- 事宜回滚
- ROLLBACK;
- 假如部门操纵产生题目,映射到事宜开启前。
- -- 事宜的特征
- 1. 原子性(Atomicity)
- 事宜是一个不行支解的事变单元,事宜中的操纵要么都产生,要么都不产生。
- 2. 同等性(Consistency)
- 事宜前后数据的完备性必需保持同等。
- - 事宜开始和竣事时,外部数据同等
- - 在整个事宜进程中,操纵是持续的
- 3. 断绝性(Isolation)
- 多个用户并发会见数据库时,一个用户的事宜不能被其余用户的事物所滋扰,多个并发事宜之间的数据要彼此断绝。
- 4. 耐久性(Durability)
- 一个事宜一旦被提交,它对数据库中的数据改变就是永世性的。
- -- 事宜的实现
- 1. 要求是事宜支持的表范例
- 2. 执行一组相干的操纵前开启事宜
- 3. 整组操纵完成后,都乐成,则提交;假如存在失败,选择回滚,则会回到事宜开始的备份点。
- -- 事宜的道理
- 操作InnoDB的自动提交(autocommit)特征完成。
- 平凡的MySQL执行语句后,当前的数据提交操纵均可被其他客户端可见。
- 而事宜是暂且封锁“自动提交”机制,必要commit提交耐久化数据操纵。
- -- 留意
- 1. 数据界说说话(DDL)语句不能被回滚,好比建设或打消数据库的语句,和建设、打消或变动表或存储的子措施的语句。
- 2. 事宜不能被嵌套
- -- 生涯点
- SAVEPOINT 生涯点名称 -- 配置一个事宜生涯点
- ROLLBACK TO SAVEPOINT 生涯点名称 -- 回滚到生涯点
- RELEASE SAVEPOINT 生涯点名称 -- 删除生涯点
- -- InnoDB自动提交特征配置
- SET autocommit = 0|1; 0暗示封锁自动提交,1暗示开启自动提交。
- - 假如封锁了,那平凡操纵的功效对其他客户端也不行见,必要commit提交后才气耐久化数据操纵。
- - 也可以封锁自动提交来开启事宜。但与START TRANSACTION差异的是,
- SET autocommit是永世改变处事器的配置,直到下次再次修改该配置。(针对当前毗连)
- 而START TRANSACTION记录开启前的状态,而一旦事宜提交或回滚后就必要再次开启事宜。(针对当前事宜)
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|