Mysql事物的四大特性,隔离级别

关系型数据事务4大特性:

原子性: 一次事务过程中的多个操作要么都成功,要么都失败.

持久性: 事务一旦提交,数据就不可改变.即使数据库服务出现问题.

隔离性: 数据库是允许同时有多个事务进行访问, 这时就需要对多个事务间的操作进行隔离,

隔离分为4个级别:

读未提交 问题 脏读

读已提交 解决 脏读 不可重复读

可重复读 解决 不可重读 幻读

串行化 解决一切问题 加锁 效率低

一致性: 在事务开始之前和事务结束以后,数据库的完整性没有被破坏.

例如: 我们多种方式对银行账户的余额进行多次同时操作,最终余额应该是我们所预期的结果,不能出现错误.

mysql并发操作的问题:

1.脏读 读到了垃圾数据 A事务读到B事务 未提交的数据

2.不可重复读 A事务开启后 读取两次数据,结果两次读到的内容不一样( 预期的效果是A在同一个事务中读取到数据应该是一样)

3.幻读 A事务开启后, 读取到的两次数据数量不一致

事务隔离级别:

读 未提交: A 可以读到B未提交的数据 问题: 会有脏读 几乎不用

读已提交: A不能读到B为提交的数据,只能读到B已提交的数据. 解决了脏读问题, 同时会发生不可重复读问题

可重复读: A事务开启后,第一次读到某个数据后,那么在这个事务中,第二次再查询同样的数据时,和原来是一致,重复读. 解决了不可重复问题

串行化: 解决所有问题, 一次只允许一个事务进行操作 是最安全的,但是效率是最低的.

你可能感兴趣的:(mysql,数据库,sql)