分布式锁解决并发的三种实现方式
分布式锁三种实现方式:
1. 基于数据库实现分布式锁;
2. 基于缓存(Redis等)实现分布式锁;
3. 基于Zookeeper实现分布式锁; 基于数据库实现分布式锁
1. 悲观锁 利用select … where … for update 排他锁 注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。
2. 乐观锁 所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源,操作过程中认为不存在并发冲突,只有upd
如何强制mysql使用某一个index
根据mysql文档,第一种是多列索引,索引可以用于为user_id,或者为user_id和blog_id在已知范围内指定值的查询。
第二种是定义了两个单列索引。如果这单列和多列索引同时存在,mysql优化器试图通过决定哪个索引将找到更少的行来找出更具限制性的索引并且使用该索引取行。以上来自对mysql帮助文档的个人理解,欢迎大牛批评指正。
mysql多个索引怎么选择
选择多个索引时,需要考虑以下几个因素:
查询频率:选择频繁被查询的列作为索引,这样可以加快查询速度。
数据重复度:选择具有较低重复度的列作为索引,这样可以提高索引的效率。
列的选择性:选择具有较高选择性的列作为索引,即该列的值足够多样化,可以减少索引的大小。
索引的大小:选择较小的列作为索引,这样可以减少索引的存储空间,并提高查询效率。
组合索引:如果多个列经常同时被查询,可以考虑创建组合索引,这样可以提高查询效率。
需要根据具体的业务需求和数据库结构来选择合适的索引。同时,需要注意索引的创建会增加插入、更新和删除操作的开销,所以需要权衡利弊进行选择。

