1、使用数据库的排它锁实现分布式锁的时候,虽然使用了唯一索引进行for update查询。但是数据库(如MySql)会对查询进行优化,是否使用索引来检索数据最终由数据库通过判断不同执行计划的代价来选择的。如果全表扫描的效率比使用索引搜索高则不会应用索引搜索(如很小的表),那么将触发表锁而不是行锁,就不会起到应用的作用。
2、多个数据库连接长时间不释放,可能把数据库连接池撑爆
1、使用数据库的排它锁实现分布式锁的时候,虽然使用了唯一索引进行for update查询。但是数据库(如MySql)会对查询进行优化,是否使用索引来检索数据最终由数据库通过判断不同执行计划的代价来选择的。如果全表扫描的效率比使用索引搜索高则不会应用索引搜索(如很小的表),那么将触发表锁而不是行锁,就不会起到应用的作用。
2、多个数据库连接长时间不释放,可能把数据库连接池撑爆