MySql事务详解
因为实际中一个数据库是很多个用户操作的,所以就有了事务这么个东西。一个或者多个数据库操作构成了一个事务。事务的属性有ACID
A(原子性)
每个事务都是一个不可分割的单元,事务中的一个部分没完成,事务就不会成功。
C(一致性)
若是从系统中删除一个员工,那么所有与该员工相关的包括工资等都要被删除。MySql中一致性由日志来保证,事务处理中间发生错误,MySql需要恢复如初,日志为数据恢复提供了跟踪记录。一致性保证了数据从不返回一个未处理完的事务。
I(隔离性)
事务之间是不发生关系的。绝对隔离性,任意时刻只有一个用户访问数据库,不现实。使用页锁和行锁,隔离不同事务。
D(持久性)
通过日志实现,rdb文件记录所有操作,保证了即使系统突然宕机也可以很好的记录下宕机前的操作。
关于并发访问数据库的问题
丢失更新: 多个事务选择同一行更新,每个事务不知道其他事务存在,最后的更新就是每个事务都重写其他事务所作的更新,可能造成书库丢失
脏读:一个事务读取到别的事务还没提交的更新数据,这就是脏数据
不可重复读:一个事务多次访问同一行读取到不一样的数据成为不可重复读。
幻读:一个事务对某行插入删除,另一个事务在读取这一行。
每一个事务都有隔离级,这样保证了数据库的一致性。数据库提供了四种隔离级:
序列化(SERIALIZABLE)
可重复度(REPEATABLE READ)
提交读(READ COMMITED)
未提交读(READ UNCOMMITED)
序列化提供了最大限度的隔离,用户之间一个接一个顺序执行当前事务
可重复读中,同一个事务中的同一条select结果总是相同的,即你不能在一个事务中看到别的事务的操作,MySql默认这个
提交读 处于这一级的事务可以看奥其他事务的操作,即这一级别同一个事务中的同条select结果可能不同
未提交读 这是最小限度的隔离。可能会有幻读和不可重复读
隔离级别越高,性能越低
- 详解Mysql分布式事务XA(跨数据库事务)
- Mysql事务详解(一)事务的概念,四大特性,使用和回滚
- mysql的锁机制、事务和隔离级别详解
- mysql事务处理用法与实例详解
- [数据库事务与锁]详解六: MySQL中的共享锁与排他锁
- PHP mysql与mysqli事务详解
- Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
- mysql事务处理用法与实例详解
- 数据库 Mysql事务详解
- 详解Mysql分布式事务XA(跨数据库事务)
- mysql 事物处理详解与修改事务处理方式
- Net Core中数据库事务隔离详解——以Dapper和Mysql为例
- mysql:day5-详解多线程状态下的事务(连接池、动态代理技术)
- mysql事务处理用法与实例详解
- [数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁
- MySQL详解--锁,事务
- MySQL事务及隔离级别详解
- 详解Mysql分布式事务XA(跨数据库事务)
- MySQL 线上执行大事务 or 锁表操作 详解
- mysql事务处理用法与实例详解