首页 > 数据库 >MySQL事务

MySQL事务

时间:2022-10-28 20:33:59浏览次数:52  
标签:回滚 transaction 隔离 事务 提交 MySQL 读取

事务

通常是默认开启事务的,所以不会回滚

事务保证了数据的一致性

  • 要么都成功
  • 要么都失败

对于没有开启自动提交的数据,是可以回滚的,一旦提交了之后,就不可以回滚,体现了MySQL的持久性

自动提交:@@autocommit=1;

手动提交:commit;

回滚:rollback;

开启事务的两种方式

  1. begin;
  2. start transaction;

事务的四大特征:

  • A 原子性:事务是最小的单位,不可以在分割。

  • C 一致性:事务要求,同一事务中的sql语句,必须保证同时成功或者同时失败。

  • I 隔离性:事务1和事务2之间是具有隔离性的。

  • D 持久性:事务一旦结束(commit,rollback),就不可以返回。事务开启:

修改默认提交

  • 1.set autocommit=0;
  • 2. begin;
  • 3. start transaction;
事务手动提交:commit;
事务手动回滚:rollback;

事务的隔离性

事务的隔离性越高,则性能越差,系统默认的隔离级别是REPEATABLE READ

查看系统隔离性

 select @@global.transaction_isolation;

查看会话隔离性

 select @@transaction_isolation;

修改系统隔离性

set global transaction isolation level read committed;

1:read uncommitted

会出现脏读现象,即可以读到还未被提交的事务,如果未被提交的事务rollback,会发生不可预料的事情,应当避免发生脏读的发生

2:read committed

会出现不可重复读现象,即事务b对于事务a的update语句提交之后与修改之前都进行读取,导致读取的数据不一致

3:repeatable read

会出现幻读现象,事务B前后两次读取同一个范围的数据,在事务B两次读取的过程中事务A新增了数据,导致事务B后一次读取到前一次查询没有看到的行。

幻读和不可重复读有些类似,但是幻读强调的是集合的增减,而不是单条数据的更新

4:serializable

会出现超时的情况,当事务a开启并且还没有commit的时候,如果需要insert,这会造成等待,如果时间久,则可以失败,事务一个接一个执行

标签:回滚,transaction,隔离,事务,提交,MySQL,读取
From: https://www.cnblogs.com/happy12123/p/16837366.html

相关文章

  • 常见的MySQL面试题有哪些?
    本文主要介绍我在公司招聘的时候,主要问应聘者的一些问题,希望对换工作的同行及在使用过程中有些疑问的同行有所帮助1. MySQL海量数据优化优化问题主要从SQL优化、事务级别调......
  • MySQL--常用语句
    MySQL常用语句1、获取数据库信息1.use数据库名;//选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。2.showdatabases;//列出MySQL数据库管理......
  • 【SpringBoot】引入mybatis及连接Mysql数据库
    创建一个SpringBoot项目其他不赘叙了,引入MyBaties、MySql依赖编辑 创建mysql表CREATETABLEsp_users(`id`INTPRIMARYKEY,`username`VARCHAR(30),`age`INT);刚......
  • 视频融合平台EasyCVR如何操作MySQL数据库来批量关闭通道?
    EasyCVR具备强大的视频接入、汇聚与管理、视频分发等视频能力,可实现的视频功能包括:视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、服务器集群、智......
  • mysql update 带条件的语句执行错误
    需求:想着更新id最大的一条数据: 原来的sql:   updatework_plane_log_detailsSET`off_working_time`='2021-03-0911:16:23'WHEREidin(selectidfromwork_pl......
  • mysql 生成指定范围的数值 保留两位(可以是整数,可以是小数)
    大家都知道mysqlrand用起来在某些场景下不是很好用,今天咱们就来实现一个函数。来提升他的功能1.随机生成0.0.1~0.05之间的数据DROPFUNCTIONIFEXISTSrand_num;C......
  • 视频融合平台EasyCVR如何操作MySQL数据库来批量关闭通道?
    EasyCVR具备强大的视频接入、汇聚与管理、视频分发等视频能力,可实现的视频功能包括:视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、服务器集群、智......
  • 企业库5.0——参数化查询、带有事务的参数化查询
    SqlDatabasem_db=DatabaseFactory.CreateDatabase("数据库连接串配置节名");///<summary>///执行带有查询参数的sql语句,返回受影响行数///</summary>......
  • Mysql取整函数
    Mysql取整函数1.round四舍五入取整round(s,n):对s四舍五入保留n位小数,n取值可为正、负、零.如四舍五入到整数位,则n取零.2.ceil向上取整ceil(s):返回比s大的最小整数3.floo......
  • MySQL学习
    MySQL学习1.数据库的分类1.1关系型数据库:MySQL、Oracle等通过表与表、行与列的关系进行存储数据。1.2非关系型数据库:Radis等通过存储对象来存储数据,数据由对......