美文网首页
事务处理 commit rolllback

事务处理 commit rolllback

作者: M_3ece | 来源:发表于2019-08-16 13:38 被阅读0次

mysql 5.5 版本后存储引擎 InnoDB支持事务

事务(transaction)

事物的特征: ACID

原子性Atomicity: 不可分割, 组成物质的基本单位, 进行数据处理操作的基本单位. 

一致性Consistrncy: 数据库在进行事务操作后, 会由原来的一致状态, 变成另一种一致的状态. 也就是说当事务提交后, 或者当事务发生回滚后, 数据库的完整性约束不能被破坏.

隔离性Isolation: 每个事务都是彼此独立的, 不会受到其他事务的执行影响. 也就是说一个事务在提交之前, 对其他事务都是不可见的. 

持久性Durability: 事务提交之后对数据的修改是持久性的, 即使在系统出故障的情况下, 比如系统崩溃或者存储介质发生故障, 数据的修改依然是有效的. 因为当事务完成, 数据库的日志就会给被更新, 这是可以通过日志, 让系统恢复到最后一次成功的更新状态. 

原子性是基础, 隔离性是手段, 一致性是约束条件, 持久性是目的. 


常用控制语句

START TRANSACTION 或者 BEGIN, 显式开启一个事务

COMMIT: 提交事务. 当提交事务后, 对数据库的修改事务是永久性的.

ROLLBACK 或者 ROLLBACK TO [SAVEPOINT], 回滚事务. 撤销正在进行的所有没有提交的修改, 或者将事务回滚到某个保存点.

SAVEPOINT: 在事务中创建保存点, 方便后续针对保存点进行回滚. 一个事务中可以存在多个保存点.

RELEASE SAVEPOINT: 删除某个保存点

SET TRANSACTION: 设置事务的隔离级别


mysql> set autocommit =0 //关闭自动提交

mysql> set autocommit = 1//开启自动提交


CREATE TABLE test(name varchar(255), PRIMARY KEY(name)) ENGINE =  InnoDB;

BEGIN;

INSERT INTO test SELECT '关羽';

COMMIT;

BEGIN;

INSERT INTO test SELECT '张飞';

INSERT INTO test SELECT '张飞';

ROLLBACK;

SELECT * FROM test;


CREATE TABLE test(name varchar(255), PRIMARY KEY(name)) ENGINE =  InnoDB;

BEGIN;

INSERT INTO test SELECT '关羽';

COMMIT;

INSERT INTO test SELECT '张飞';

INSERT INTO test SELECT '张飞';

ROLLBACK;

SELECT * FROM test;


CREATE TABLE test1(name varchar(255), PRIMARY KEY(name)) ENGINE =  InnoDB;

SET @@completion_type = 1;  

BEGIN;

INSERT INTO test1 SELECT '关羽';

COMMIT;

INSERT INTO test1 SELECT '张飞';

INSERT INTO test1 SELECT '张飞';

ROLLBACK;

SELECT * FROM test1;


事务隔离

通过设置不同的隔离等级, 以便在正确性和效率之间进行平衡. 

事务并发处理可能存在的三种异常?脏读, 不可重复读和幻读?

脏读: 还没有提交事务, 就可读到加入的事务信息. 读取了其他事务还没有提交的数据.

不可重复读: 同一条记录, 两次读取的结果不同. 这是因为有其他事务对这个数据同时进行了修改或删除. 

幻读: 事务A根据条件查询得到了N条数据, 但此时事务B更改或者增加了M条符合事务A查询条件的数据, 这样当事务A再次进行查询的时候会发现有N+M条数据.

针对可能存在的异常情况, 四种事务隔离的级别分别是什么?

隔离级别:

读未提交 允许脏读 允许不可重复读 允许幻读

读已提交    禁止            允许                允许

可重复读    禁止            禁止                允许

可串行化    禁止            禁止                禁止

相关文章

  • 事务处理 commit rolllback

    mysql 5.5 版本后存储引擎 InnoDB支持事务 事务(transaction) 事物的特征: ACID ...

  • mysql事务

    mysql的InnoDB引擎支持事务,它用COMMIT、SAVEPOINT及ROLLBACK支持事务处理。事务就是...

  • 事务处理之commit

    事务在没提交的时候,写入的是一个临时内存表, 事务在提交的时候,由内存表写入物理磁盘;

  • spring aop

    1、Spring中事务处理的作用: Spring事务处理,是将事务处理的工作统一起来,并为事务处理提供通用的支持。...

  • 关于 tp5 事务操作总结

    前提: 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用...

  • MySql___(7) MySQL 必知必会

    第26章 管理事务处理 26.1 事务处理 并非所有引擎都支持事务处理正如第21章所述,MySQL支持几种基本...

  • tp6进行事务操作

    使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 Inn...

  • OLAP和OLTP

    联机事务处理(OLTP)(on-line transaction processing)主要执行基本日常的事务处理...

  • SpringBoot(4)

    四 今日目标 事务处理 概念介绍 什么是事务处理? 事务处理就是要保持数据库的安全性。 事务要么完全地执行,要么完...

  • SQL学习十七、事务处理

    事务处理 使用事务处理(transaction processing),通过确保成批的 SQL 操作要么 完全执行...

网友评论

      本文标题:事务处理 commit rolllback

      本文链接:https://www.haomeiwen.com/subject/kzzzjctx.html