数据库并发控制一般采用三种方法,分别是乐观锁、悲观锁和时间戳。
一、乐观锁:
乐观锁是一种乐观思想,认为读多写少,也就是认为遇到并发写的可能性低,用户在读数据的时候别人不会写自己所读的数据,所以不会上锁。但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作。
二、悲观锁:
悲观锁就是悲观思想,认为写多读少,也就是认为遇到并发写的可能性高,觉得自己读数据库的时候别人可能刚好在写自己刚读的数据,所以每次在读写数据的时候都会上锁,只有自己把数据读完了,才允许别人修改那部分数据。
三、时间戳:
时间戳就是在数据库表中单独加一列时间戳,比如 “TimeStamp”,每次读出来的时候,把该字段也读出来,当写回去的时候,把该字段加 1,提交之前 ,跟数据库的该字段比较一次,如果比数据库的值大的话,就允许保存,否则不允许保存,这种处理方法虽然不使用数据库系统提供的锁机制,但是这种方法可以大大提高数据库处理的并发量。
以上所说的加 “锁”,其实分为几种锁,分别是:共享锁(读锁)和排它锁(写锁),也叫独占锁。