【MySQL学习笔记】事务和MySQL中事务隔离级别修改

一、事务的概念

事务:一组操作逻辑,使数据从一个状态转变到另一个状态。
事务特性

  • 原子性(atomicity):
    一个不可分割的工作单元,要么全部提交,要么全部回滚。
  • 一致性(consistency):
    事务执行前后,数据从一个合法状态转变到另一个合法状态
  • 隔离性(isolation):
    事务之间相互不干扰。
  • 持久性(durablility)
    事务被提交,则对数据修改时永久性的。

事务状态:

  • 活动(active):事务正在执行中
  • 部分提交(partially committed):数据已提交到内存,未修改到磁盘
  • 失败(failed):活动和部分提交的中的事务,出现异常,导致无法继续执行。
  • 中止(aborted):失败的事务回滚执行完成后。
  • 提交(committed)

二、基本操作

1、显示事务

开启事务:start transaction或者begin
保存点:savepoint [name];
回滚:rollback
提交:commit

2、隐式事务

MySQL变量autocommit默认设置为ON,设置为false即可关闭自动DML事务提交。

##查询变量
show variables like "autocommit";
## 关闭自动提交
set autocommit=false;
## 开启自动提交
set autocommit=ture;
  • DDL自动提交。
  • 针对用户的操作会自动提交。
  • 两个事务间无commitrollback则前一个事务会自动提交。
  • start slavestop slavereset slavechange master to这些关于MySQL主从复制的语句会隐式提交。
  • analiyze tablecache indexcheck tableflushload index into cacheoptimize tablerepair tablereset等也会隐式提交。

三、事务隔离级别

1、问题背景

在事务并发时,常出现一些问题:

  • **脏写:**事务A、B同时开启,在未终止或未提交前,事务A修改了事务B中修改的数据。
  • **脏读:**事务A、B同时开启,事务A读取了事务B更新而未提交的数据,事务B最终回滚了数据,则A读取的数据是脏数据。
  • **不可重复读:**事务A、B同时开启,在事务A两次读取同一字段之间,事务B修改了该字段,导致事务A两次读取字段结果不同。
  • **幻读:**事务A、B同时开启,在事务A两次读取同一字段之间,事务B插入一些行,导致事务A两次读取字段结果增加。

一般认为问题严重程度排序如下:
脏写 > 脏读 > 不可重复读 > 幻读

2、SQL事务隔离级别

  • READ UNCOMMITTED 读未提交。
  • READ COMMITTED 读已提交。
  • REPEATABLE READ 可重复读。
  • SERIALIZABLE 可串行。
隔离级别脏读不可重复读幻读加锁读
READ UNCOMMITTEDYesYesYesNo
READ COMMIITTEDNoYesYesNo
REPEATABLE READNoNoYesNo
SERIALIZABLENoNoNoYes

3、查看和修改MySQL中的事务隔离级别

MySQL默认事务隔离为REPEATABLE-READ.

## 查看事务隔离级别
show @@transection;

## 设置事务隔离级别
set [global|session] transection_istoloation='READ-UNCOMMITTED | READ-COMMIITTED | REPEATABLE-READ | SERIALIZABLE';

## 在my.cnf写入,写在[mysqld]下
transaction-isolation = READ-COMMITTED
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值