锁定粒度小,锁冲突概率低,并发度高,开销大,加锁慢,容易死锁。
锁定粒度大,锁冲突概率高,并发度低,开销小,加锁快。
也叫读锁或S锁,共享锁锁定的资源可以被其他用户读取,但不能修改。
也叫独占锁、写锁或X锁。排它锁锁定的数据只允许进行锁定操作的事务使用,其他事务无法对已锁定的数据进行查询或修改。
不采用数据库自身的锁机制,而是通过程序来实现。
通过数据库自身的锁机制来实现,从而保证数据操作的排它性。
乐观锁适合读操作多的场景,相对来说写的操作比较少。
悲观锁适合写操作多的场景,因为写的操作具有排它性。
如果事务涉及多个表,操作比较复杂,那么可以尽量一次锁定所有的资源,而不是逐步来获取,这样可以减少死锁发生的概率。
如果事务需要更新数据表中的大部分数据,数据表又比较大,这时可以采用锁升级的方式,比如将行级锁升级为表级锁,从而减少死锁产生的概率。
不同事务并发读写多张数据表,可以约定访问表的顺序,采用相同的顺序降低死锁发生的概率。