创建Spanner表和索引似乎需要很长时间

时间:2018-05-16 16:27:41

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

我们正在为GCP Spanner 1节点实例的同一个实例上的每个开发人员设置单独的数据库原型,并注意到创建表需要大约20秒,创建索引需要60到120秒。这是正常的吗?有什么办法可以改善这些时间吗?我们使用GCP控制台工具批量创建这些对象,并使用了Squirrel。 GCP控制台似乎要快一点,但很难自动化创建过程。

大图: 大约有10多个数据库,大约有70多个表,每个开发人员(15个以上的开发人员)需要设置超过60个索引。在一个关系世界中,这需要几秒钟。使用Spanner,每个开发人员需要花费数小时设置。关于如何改进这一点的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

(我在Cloud Spanner团队工作,并会尝试添加一些建议)

如上所述,批处理在这里很有用。特别是,我强烈建议在与其父表相同的批处理中创建二级索引。如果不这样做,那么Cloud Spanner必须经过回填过程以确保新索引与基表一致,但如果同时创建基表和索引,它可能会短路。请注意,这与我们通常为批量加载大型数据集提供的建议不同,因为在这种情况下,在创建二级索引之前批量加载数据通常会更快。

此外,在数据库创建时创建表和索引可能会更快。在API中,您可以通过在createDatabase操作的extraStatements字段中创建表和索引来执行此操作。您也可以直接从用户界面或gcloud

执行此操作

总结一下,我建议:

  • 对于每个单独的开发人员数据库,创建所有表和索引 在创建数据库的同时。

它仍然不是即时的,但它是你最好的选择。使用这种方法,我只是尝试创建一个每个表有100个表和2个二级索引的新数据库,我能够看到比你报告的更低的延迟。