1

对于选择查询,读取锁获取哪些行?是只有匹配过滤器的行,还是必须扫描的所有行?

4

1 回答 1

0

首先,请注意,只有读写事务需要锁,而只读事务不需要。(https://cloud.google.com/spanner/docs/reads

Cloud Spanner 将获取所有返回行的锁。它还将获得足够的额外锁以避免“假阴性”,即由于最初与过滤器不匹配而未返回的行,但随后在事务提交之前被修改以匹配过滤器。这些假阴性通常被称为“幻像行”:您执行一个查询并获得一组结果,然后在同一个事务中执行完全相同的查询并获得更多行。如果查询计划对基表进行扫描,我们将对整个表进行范围锁定,这样在您的事务完成之前不会出现幻影行。如果查询计划使用索引来查找字段“Y”的值为“X”的行,那么我们将锁定与“Y=X”的所有可能索引条目对应的索引范围,

于 2017-02-16T06:42:38.790 回答