2017-02-16 39 views

回答

0

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

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