Elasticsearch乐观锁及并发控制
- 在数据库领域中,有两种方法来确保并发更新,不会丢失数据
- 1、 悲观并发控制—阻塞式的
这种方法被关系型数据库广泛使用,它假定有变更冲突可能发生,因此阻塞访问资源以防止冲突。
一个典型的例子就是读取一行数据之前先将其锁住,确保只有获得锁的线程能够对这行数据进行修改。 - 2、乐观并发控制—非阻塞
Elasticsearch中使用的这种方法假定冲突是不可能发生的,并且不会阻塞正在尝试的操作,然鹅,如果数据源 在读写中被修改,更新将会失败。在Elasticsearch中,有一个version字段,这个version字段在每次更新的时候,就会+1,所以当有两个进程同时来更新这条数据的时候,通过CAS,肯定会有一个更新失败。
从效率上,乐观并发控制高于悲观并发控制。
图解
代码解释
1、先创建一个文档
2、 查看这个文档