Mysql事务详解(二)事务的隔离性和容易引起的问题

来源:互联网 发布:java的scanner怎么用 编辑:程序博客网 时间:2024/04/28 10:21

上一篇讲到事务的四大特性,其中有一个是事务的隔离性,即两个事物之间不会互相影响,为了实现这样的功能,就引入了事务的隔离性。

事务的隔离性

为了保证事务的隔离性,自然我们可以把事务设计成单线程的,这样的话效率就会极其低下,为了保证隔离性,又不失效率我们把丧失隔离性的情况分为三种

脏读:读到另一个未提交事务的数据

幻读:在一个事务过程中已经读取了一次表,此时恰巧另一个事务commit,导致这次事务再一次读取表时前后不一致。(表影响)

不可重复读:在一个事务过程中已经读取了一次a数据,此时恰巧另一个事务commit,导致这次事务再一次读取a数据时前后不一致。(行影响)

针对这三种情况推出了四大隔离级别

   四大隔离级别:
                Read uncommitted -- 不防止任何隔离性问题,具有脏读/不可重复度/虚读(幻读)问题
                Read committed -- 可以防止脏读问题,但是不能防止不可重复度/虚读(幻读)问题(mysql默认)
                Repeatable read -- 可以防止脏读/不可重复读问题,但是不能防止虚读(幻读)问题
                Serializable -- 数据库被设计为单线程数据库,可以防止上述所有问题

这四大隔离级别,安全性递增。效率递减

1 0
原创粉丝点击