上一章说到了高并发事务会出现的一些问题,解决方案就是对应的隔离级别。
mysql有四种隔离级别,每一种都会解决脏写问题,所以也是上章不讲的原因。
读未提交:只解决了脏写问题,剩下三种都还存在。
读已提交(不可重复读):解决了脏读问题。
可重复读:解决了不可重复读。
串行化:解决了幻读
我们可以看到隔离级别越高,解决的问题也多。
2.mysql默认的事务的隔离级别是什么?
默认的隔离级别是可重复读,解决的除幻读以外的问题。
3.如何选择事务的隔离级别?
隔离级别越高,请求的锁越多,性能也就会变低。如果没有什么特殊要求,我们就选择默认的隔离级别就够了。特殊要求就是对于数据的一致性要求特别高,并且是高频读写下。就可以使用较高的隔离级别甚至串行化。相反可以选择低的。
4.靠缓存可以提高事务隔离级别的性能吗?
这答案并没有绝对的,具体问题具体分析。对于读操作,肯定能提高性能。但对于读操作就不一定了。我们这里以redis为例,在进行事务写操作时,我们要进行双写操作,不仅要写到数据库中,还要同步写到redis中,我们知道redis是单线程的。如果高频写的话,性能可能会下降。如果写入数据库中出现异常导致回滚,也不能让redis中的数据进行更改。 所以要分别进行说明
