MySQL事务

1.数据库事务处理过程
1.开启事务(默认开启)
手动开启:两种方式:第一种:begin;
第二种:start transaction;
2.执行sql语句
insert delete update select
3.事务的处理
提交(commit)(默认)/回滚(rollback)/保存还原点
autocommit变量表示自动提交的当前状态
默认:autocommit = ON
想要查看autocommit状态,利用show variables like ‘autocommit’;
设置自动提交状态关闭:set sutocommit = OFF;

2.事务的四大特性(ACID)
A:Atomicity---->原子性
一个事务中的所有操作是一个整体,不可再分
事务中的所有操作要么都成功,要么都失败
C:Consistency—>一致性
一个用户操作了数据,提交以后
另一个用户看到的数据与之前用户看到的效果是一致
*I:Isolation---->隔离性----->(事务隔离级别)
指的是多个用户并发访问数据库时
一个用户操作数据库,另一个用户不能有所干扰
多个用户之间的数据事务操作要互相隔离
D:Durability—>持久性
指的是一个用户操作数据的事务一旦被提交(缓存–>文件)
他对数据库底层真实的改变是永久性的 不可返回

3.事务的隔离级别
事务的隔离性可能会产生多线程并发操作同一个数据库表格的问题
会带来数据的安全隐患
1.脏读
一个人读到了另外一个人还没有提交的数据
A B在操作同一张表格
A修改了数据,还没有提交,B读取到了
A不提交了,回滚回来,B刚刚读取到的那些数据就是无用的----脏数据
2.不可重复读
A B在操作同一个表格
A先读取了一些数据,读完之后B此时将数据做了修改/删除
A再按照之前的条件重新读一遍,与第一次读取的不一致
3.幻读(虚读)
A B在操作同一个表格
A先读取了一些数据,读完之后B此时将数据做了新增
A再按照之前的条件重新读一遍,与第一次读取的不一致
需要考虑事务的隔离级别
Serializable 最高 可以避免所有出现的问题 性能很慢
Repeatable Read 可重复读 (避免脏读,不可重复读)
Read Committed 读已提交 (避免脏读)
Read UnCommitted 读取未提交 (所有效果均无法保证)
MySQL数据库提供默认隔离级别 Repeatable Read
Oracle数据库提供默认隔离级别 Read Committed
可以修改数据库中的隔离级别
set session transaction isolation level xxx;
如果不放心可以查看
select @@tx_isolation;

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值