日期:2014-05-18  浏览次数:20797 次

并发疑惑
    最近学习数据库的事务与并发,看了几天还是很困惑;如:数据库的事务隔离级别,目的是保证并发读取数据的正确性,隔离级别有四种,其中低级别的 read uncommitted会发生脏读、重复读、虚读等,高级别的serializable则都不会发生,事务隔离级别越高并发性能则越低,事务隔离级别越低则并发能力越高,并发能力与数据准确似乎很矛盾,有的大型系统、网站处理并发能力感觉非常厉害,但,又是怎么保证数据的准确呢?? 注:本人没接触过大型项目
并发,事务,

------解决方案--------------------
你都说了有四种级别,分别对应的优缺点
------解决方案--------------------
并发和数据的一致性的确是矛盾的。但注意这些都是针对同一行,很少有项目要高并发对同一行做操作的。针对不同的行,数据库提供的不同粒度的锁已经很好的解决这个问题了。

实在有对同一行一致性要求很高的大项目,我所知道的方案如下,欢迎补充!
1. 分区,最典型的是游戏分不同的服务器,不同分区间数据隔离。减少并发
2. 查询和操作隔离,像12306,查票服务器和买票服务器分离。查询服务器从缓存里读数据。每隔一段时间进行同步。(这实际上是牺牲了数据的准确性)PS:这种解决方案是我听来的,有了解12306的同学欢迎指正
这种情况下没有两全其美的办法,总是要牺牲一头(1牺牲并发性,2牺牲准确性)