乐观锁:
优势:适合读多写少的业务,并发性好,提高系统吞吐量。
缺点:用户体验不好,提交时易被告知数据已被修改。
操作方式:当我们要对一个数据库中的一条数据进行修改的时候,只有对该数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。(如基于mysql通过加version字段实现乐观锁、CAS算法)
CAS(Compare and Swap):
CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。
悲观锁:
优势:适合写多读少的业务,隔离级别为重复读,提高数据可靠性。
缺点:并发性不好,性能不高。
操作方式:当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,对该数据进行加锁以防止并发。(基于mysql通过select…for update实现悲观锁)