当前位置 博文首页 > @王某人:数据库进阶---mysql---事务管理

    @王某人:数据库进阶---mysql---事务管理

    作者:[db:作者] 时间:2021-06-17 21:13

    事务

    ?????事务(Transaction)是一系列对系统中数据进?访问与更新的操作组成的程序执行逻辑单元。
    ??????????(1) 事务的 语法
    ??????????(2) 事务的特性
    ??????????(3) 事务并发问题
    ??????????(4) 事务隔离级别
    ??????????(5) 不同隔离级别的锁的情况(了解)
    ??????????(6) 隐式提交(了解)
    在这里插入图片描述

    ?????事务的语法

    ??????????1. start transaction;或begin;
    ??????????2. commit; 使得当前的修改确认
    ??????????3. rollback; 使得当前的修改被放弃(需在提交之前执行)

    ?????事务的特性:

    ??????????1. 原?性(Atomicity)
    ???????????????事务的原?性是指事务必须是?个原子的操作序列单元。事务中包含的各项操作在?次
    ???????????????执?过程中,只 允许出现两种状态之一。
    ???????????????(1)全部执行成功
    ???????????????(2)全部执行失败
    ???????????????事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执
    ????????????????过程中出错, 会回滚到事务开始前的状态,所有的操作就像没有发?一样。也就是说
    ???????????????事务是?个不可分割的整体
    ??????????2. ?致性(Consistency)
    ???????????????事务的一致性是指事务的执?不能破坏数据库数据的完整性和一致性,一个事务在执?
    ???????????????之前和执行之后,数据库都必须处以?致性状态。
    ???????????????比如:如果从A账户转账到B账户,不可能因为A账户扣了钱,?B账户没有加钱。
    ??????????3. 隔离性(Isolation)
    ???????????????事务的隔离性是指在并发环境中,并发的事务是互相隔离的。也就是说,不同的事务并
    ???????????????发操作相同的数 据时,每个事务都有各自完整的数据空间。
    ????????????????个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务是不
    ???????????????能互相干扰的。 隔离性分4个级别,
    ??????????4. 持久性(Duration)
    ???????????????事务的持久性是指事务?旦提交后,数据库中的数据必须被永久的保存下来。即使服务
    ???????????????器系统崩溃或服 务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务
    ???????????????成功结束后的状态

    ?????事务的并发问题:

    ??????????脏读:
    ???????????????读取到了没有提交的数据, 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取
    ???????????????到的数据是脏数据。
    ??????????不可重复读:
    ???????????????同?条命令返回不同的结果集(更新).事务 A 多次读取同一数据,事务 B 在事务A 多
    ???????????????次读取的 过程中,对数据做了更新并提交,导致事务A多次读取同一数据时,结果不一
    ???????????????致。
    ??????????幻读:
    ???????????????重复查询的过程中,数据 就发?了量的变化(insert, delete)

    ?????事务隔离级别:

    在这里插入图片描述
    ??????????4种事务隔离级别从上往下,级别越高,并发性越差,安全性就越来越高。
    ???????????般数据默认级别是 读以提交或可重复读
    ??????????查询当前会话中事务的隔离级别:
    ???????????????select @@transaction_isolation;
    ??????????设置当前会话中的事务隔离级别:

    ?????不同的隔离级别的锁:

    ??????????1. 读未提交(RU): 有行级的锁,没有间隙锁。
    ???????????????它与RC的区别是能够查询到未提交的数据。
    ??????????2. 读已提交(RC):有行级的锁,没有间隙锁,读不到没有提交的数据。
    ??????????3. 可重复读(RR):有行级的锁,也有间隙锁,
    ???????????????每次读取的数据都是一样的,并且没有幻读的情况。
    ??????????4. 序列化(S):有行级锁,也有间隙锁,读表的时候,就已经上锁了

    ?????隐式提交:

    ??????????DQL:查询语句句
    ??????????DML:写操作(添加,删除,修改)
    ??????????DDL:定义语句句(建库,建表,修改表,索引操作,存储过程,视图)
    ??????????DCL: 控制语?言(给?用户授权,或删除授权)
    ???????????????都是隐式提交。
    ??????????隐式提交:执?行行这 种语句句相当于执?行行commit;

    下一篇:没有了