事务

本文详细介绍了MySQL中事务的概念及其使用方法,包括自动开启的特性、手动开启事务的方法,以及事务的四大特性:原子性、一致性、隔离性和持久性。此外,文章还阐述了MySQL提供的三种隔离级别,包括Serialiable、Repeatableread和Readcommitted,以及如何设置这些隔离级别以避免脏读、不可重复读和虚读现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务

什么是事务?

事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功,从而确保了数据的准确安全。

MYSQL中如何使用事务?

1.在MySQL中的每一条语句都是属于独立的事务,myaql中的事务是自动开启的,每一个数据厂商不一样,oracal中就不是

2.在mysql中手动开启事务,使用的是  start transaction   在此之后的语句都会处于同一个事务之中;

事务的特性:

原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生;

一致性:事务必须是数据从一个一致性状态变换到另外一个一致状态;

隔离性:事务的隔离性从一个一致性变换到另外一个一致性状态

持久性:持久性是指一个事务一旦被提交了,它对数据的改变就是永久的,接下来即使数据库发生了故障也不应该对其有任何影响;

总结事务的特性:原子性  隔离性 永久性  一致性


隔离性:如果没有隔离性,那么线程之间就会出现干扰


如果不考虑隔离级别,会出现以下的情况:-->下面的是错误的现象

脏读:一个线程中的事务读到了另外一个线程中未提交的数据

不可重复读:一个线程中的事务读到了另外一个线程中已经提交的update的数据(前后内容不一样)

虚读(幻读):一个线程中的事务读到了另外一个线程已经提交的insert的数据(前后条数不一样)


针对这三种情况  mysql提供了三种隔离级别:

Serialiable:可避免脏读,不可重复读,虚读情况的发生      最高

Repeatable read:可避免脏读,不可避免重复读情况的发生,但是不能避免的是虚读或者幻读情况的发生  第二

Read committed:可以避免脏读情况的发生;

Read unconnitted:级别最低,以上情况均无法保证    级别最低


设置MySQL的默认隔离级别是:REPEATABLE READ    这个是可重复读   他可以避免的是脏读和不可重复读;



查询当前使用的隔离级别:select @@tx_islation   select @@tx_islation   select @@tx_islation;

设置MySQL事务的格力级别:set session transaction isolation level xxx;(设置当前事务的,并不是永久改变的;)

注意的是:修改mysql事务的隔离级别,必须在开启事务之前,否则是无效的;




























































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值