事务有四大特性:ACID
原子性:强调事务的不可分割.
* 一致性:事务的执行的前后,数据的完整性保持一致.
* 隔离性:一个事务在执行的过程中,不应该受到其他事务的干扰.
* 持久性:事务一旦结束,数据就持久到数据库中.
1.1.4.2 如果不考虑事务的隔离性,引发一些安全性问题:
读问题:三类
* 脏读:一个事务读到了另一个事务*未提交的数据.
* 不可重复读:一个事务读到了另一个事务已经提交(update)的数据.引发一个事务中的多次查询结
果不一致.
* 虚读/幻读:一个事务读到了另一个事务已经提交的(insert)数据.导致多次查询的结果不一致
1.1.4.3 解决读问题:
设置事务的隔离级别:
* read uncommitted :脏读,不可重复读,虚读都可能发生.
* read committed :避免脏读,但是不可重复读和虚读有可能发生.
* repeatable read :避免脏读和不可重复读,但是虚读有可能发生的.
* serializable :避免脏读,不可重复读和虚读.(串行化的-不可能出现事务并发访问)
安全性:serializable > repeatable read > read committed > read uncommitted
效率:serializable< repeatable read < read committed < read uncommitted
MYSQL :repeatable read
网友评论