在并发访问的数据库中,锁机制是控制并发的重要手段。而MySQL中,就有悲观锁和乐观锁这两种锁机制。
悲观锁
悲观锁机制是指数据在被处理前,先借助锁机制将数据进行锁定,以免其他用户对该数据进行操作。它的特点在于对数据进行操作时,先进行锁定,操作完毕再进行解锁,这个过程需要等待时间。这种方式会严重降低MySQL的并发性能,应该在适合的情况下使用。例:SELECT FOR UPDATE
乐观锁
乐观锁机制是在操作的过程中,不对数据进行锁定,而是通过版本号控制保证数据的最终一致性。在读取数据时,不进行锁的处理,一旦竞争出现,就把操作失败的回滚。这个过程不需要等待,可以很好的提升MySQL的并发性能。例:SELECT version,UPDATE WHERE version = version + 1
悲观锁 VS 乐观锁
相比较悲观锁而言,乐观锁的并发性更佳,因为处理对数据的操作时不需要先进行锁定。但乐观锁并不那么保险,如果竞争的过多,会导致大量操作失败,对于复杂的应用场合,使用悲观锁较为稳当。但运用乐观锁可以很好的提升MySQL的并发性能。