"扳手操作失败"创建NULL_FILTERED索引

时间:2018-03-27 04:52:17

标签: database google-cloud-platform google-cloud-spanner

我无法在Cloud Spanner表上创建索引,收到错误," Spanner操作失败"。

即使将簇大小增加到6到16个节点,我也无法在~1200万行表上创建两个索引。

Spanner operation failed

我做了什么:

  • 在3节点群集上的Spanner中创建objects
  • 表格包含10-12个列,其中包含STRINGINT64和一个ARRAY<STRING>
  • 主键是两列;分片值(哈希为object_id)和object_id
  • 加载~1200万行
  • 时没有索引(主键除外)
  • 加载挂钩的3节点;升级到6个节点

我尝试了什么:

  • 尝试构建三个索引(通过控制台中的DDL) - 收到&#34;扳手操作失败&#34;
  • 从6开始增加扳手节点数 - > 12,
  • 能够在单个UNIQUE列上构建3个索引中的1个(STRING
  • 尝试在单个UNIQUE NULL_FILTERED列上构建其他两个索引(STRING) - 收到&#34;扳手操作失败&#34;
  • 从12开始增加扳手节点 - &gt; 16(帐户最大)
  • 尝试在单个UNIQUE NULL_FILTERED列上构建其他两个索引(STRING) - 收到&#34;扳手操作失败&#34;

我尝试了什么(更新):

  • 删除了NULL_FILTERED子句并尝试构建其他两个索引。没有解决,仍然无法建立。

1 个答案:

答案 0 :(得分:5)

来自GCS的回复:

我们的产品团队能够找到无法创建索引的原因。如图所示,在数据中,您有两个不唯一的条目,因此会创建唯一性违规[1]并阻止创建索引。在索引尝试之前抛出此错误,这就是索引创建在尝试之前失败的原因。

您可以使用查询来查找重复的条目:

SELECT column, count(column) 
FROM table
GROUP BY column
HAVING COUNT(column) > 1

您可以修改此查询以同时搜索所有键,或在每次搜索后修改它。一旦处理了重复项,您应该能够管理这些条目并再次运行索引创建。

我希望Spanner团队可以修复此错误并在将来的版本中返回正确的错误。