MySQL---B站学习总结---数据库事务

MySQL—B站学习总结—数据库事务(TCL)

TCL:Transaction Control Language,事务控制语言

事务:

一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行

案例:转账

存储引擎:在MySQL中的数据用各种不同的技术存储在文件/内存中

查看存储引擎:SHOW ENGINES;

事物的属性:ACID

  1. 原子性(Atomicity):要么都执行,要么都回滚
  2. 一致性(Consistency):保证数据的状态操作前和操作后保持一致
  3. 隔离性(Isolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰
  4. 持久性(Durability):一个事务一旦提交,则数据将持久化到本地,除非其他事务对其进行修改

事物的创建:

隐式事务:

事务没有明显的开启和结束的标记,例:insert,update,delete语句
SHOW VARIABLES LIKE '%autocommit%'查看自动提交的状态,默认状态是ON在这里插入图片描述

显式事务:

事务具有明显的开启和结束标记,前提:必须设置自动提交事务的功能为禁止状态

设置自动提交事务的功能为禁止状态:set autocommit = 0

步骤:
  1. 开启事务:取消自动提交事务的功能
    set autocommit = 0;(这个语句默认开启事务)
    start transcation;(可写可不写的)
  2. 编写事务的一组逻辑操作单元(多条sql语句)
    insert
    update
    delete
  3. 提交事务或回滚事务
    1. commit:提交事务(没有问题)
    2. rollback:回滚事务(出现问题)

演示事务的使用步骤的例子

在这里插入图片描述

数据库的隔离级别

在这里插入图片描述

当多个事务同时操作同一个数据库的相同数据时事务的并发问题有哪些?

1.脏读

在这里插入图片描述

2.不可重复读

在这里插入图片描述

3.幻读

在这里插入图片描述

数据库事务的隔离性

在这里插入图片描述

数据库事务的隔离级别

在这里插入图片描述

数据库提供的四种隔离级别

在这里插入图片描述

Oracle的事务隔离级别

在这里插入图片描述

Mysql的事务隔离级别

在这里插入图片描述

如何避免事务的并发问题?

通过设置事务的隔离级别

  1. READ UNCOMMITTED
  2. READ COMMITTED 可以避免脏读
  3. REPEATABLE READ 可以避免脏读、不可重复读和一部分幻读
  4. SERIALIZABLE可以避免脏读、不可重复读和幻读
     

设置隔离级别:

set session|global transaction isolation level 隔离级别名;
 

查看隔离级别:

select @@tx_isolation;

 
 

savepoint:节点名,设置保存保存点

savepoint用例

在这里插入图片描述

Delete和Truncate在事物中的区别

Delete事务演示

在这里插入图片描述

Truncate事务演示

在这里插入图片描述

注意: Delete支持回滚Truncate不支持回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值