栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库——事务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库——事务

数据库——事务 语法
1. 开始语句:
start transaction;
begin;
2. 提交,确认当前修改:
commit;
3. 回滚,放弃当前修改:
rollback;
ACID特性
  1. 原子性

    指事务必须说一个原子的操作单位,即一次执行过程中,只允许出现两种情况:
    1)全部执行成功
    2)全部执行失败

  2. 一致性

    指事务的执行不能破坏数据库数据的完整性和一致性,即事务在执行前和执行后,数据库都必须处于一致性状态。
    如:从A账户转账到B账户,不能只有A账户扣了钱,而B账户没有加钱。

  3. 隔离性

    指在并发环境中,事务间是相互隔离的,即不同事务并发操作相同数据时,每个事务都有各自完整的数据空间。

  4. 持久性

    指事务一旦提交后,数据库中的数据必须被永久保存下来。

事务并发问题
  • 脏读:读取到了没有提交的数据;事务A读取到了事务B更新的数据,B又进行了回滚操作,因此A读取的数据是脏数据。

  • 不可重复读:同一命令返回不同的结果集(更新);事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据更新并提交了,导致事务A两次读取数据结果不一致。

  • 幻读:重复查询的过程中,数据发生了量的变化(insert, delete)。

事务隔离级别
事务隔离级别脏读不可重复读幻读
读未提交(READ_UNCOMMITTED)允许允许允许
读已提交(READ_COMMITTED)禁止允许允许
可重复读(REPEATABLE_READ)禁止禁止可能会
顺序读(SERIALIZABLE)禁止禁止禁止

以上隔离级别,自上往下,级别越高,并发性越差,安全性越高。一般数据默认级别是READ_UNCOMMITTED或READ_COMMITTED

  • MySQL中查看当前会话中事务的隔离级别

    select @@tx_isolation

  1. 读未提交:隔离级别最低,允许脏读。
  2. 读已提交:不同事务执行时,只能获取到已经提交的数据。
  3. 可重复读:可保证事务在处理过程中,多次读取同一个数据时,该数据的值和事务开始时刻是一致的。
不同隔离级别的锁的情况
  1. 读未提交:有行级锁,没有间隙锁。与读已提交的区别是能够查询到未提交的数据。
  2. 读已提交:有行级锁,没有间隙锁,读不到没有提交的数据。
  3. 可重复读:有行级锁,也有间隙锁,每次读取的数据都是一样的,且没有幻读的情况。
  4. 顺序读:有行级锁,也有间隙锁,读表的时候,就已经上锁了。
隐式提交

DQL:查询语句
DML:写操作
DDL:定义语句
DCL:控制语言
以上都是隐式提交,执行这类型语句,相当于执行了commit。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号