创建 Spanner 表和索引似乎需要很长时间
Creating Spanner Tables and Indexes seem to take a long time
我们正在为每个开发人员在 GCP Spanner 1 节点实例的同一实例上设置单独的数据库进行原型设计,并注意到创建表需要大约 20 秒,创建索引需要 60 到 120 秒。这是正常的吗?有什么办法可以改善这些时间安排吗?我们正在使用 GCP Console 工具批量创建这些对象,并使用了 Squirrel。 GCP Console 似乎快一点,但很难自动创建创建过程。
大图:
大约有 10 多个数据库,大约 70 多个表,每个开发人员(15 名以上开发人员)需要设置 60 多个索引。在关系世界中,这需要几秒钟。使用 Spanner,每个开发人员都需要数小时才能完成设置。非常感谢任何关于如何改进这一点的建议。
(我在 Cloud Spanner 团队工作,会尝试添加一些建议)
如上所述,批处理在这里很有用。特别是,我强烈建议在与其父索引 table 同一批次中创建二级索引。如果你不这样做,那么 Cloud Spanner 必须通过回填过程来确保新索引与基 table 一致,但如果基 table 和索引是同时创建的。请注意,这与我们通常为批量加载大型数据集提供的建议不同,因为在这种情况下,在创建二级索引之前批量加载数据通常会更快。
此外,在创建数据库时创建 table 和索引可能会更快。在 API 中,您可以通过在 createDatabase 操作的 extraStatements
字段中创建 table 和索引来完成此操作。您也可以直接从用户界面或 gcloud
.
执行此操作
综上所述,我建议:
- 为每个单独的开发人员数据库,创建所有 table 和索引
在创建数据库的同时。
它仍然不会立即生效,但这是您的最佳选择。使用这种方法,我只是尝试创建一个具有 100 tables 和每个 table 2 个二级索引的新数据库,我发现延迟比您报告的要低得多。
我们正在为每个开发人员在 GCP Spanner 1 节点实例的同一实例上设置单独的数据库进行原型设计,并注意到创建表需要大约 20 秒,创建索引需要 60 到 120 秒。这是正常的吗?有什么办法可以改善这些时间安排吗?我们正在使用 GCP Console 工具批量创建这些对象,并使用了 Squirrel。 GCP Console 似乎快一点,但很难自动创建创建过程。
大图: 大约有 10 多个数据库,大约 70 多个表,每个开发人员(15 名以上开发人员)需要设置 60 多个索引。在关系世界中,这需要几秒钟。使用 Spanner,每个开发人员都需要数小时才能完成设置。非常感谢任何关于如何改进这一点的建议。
(我在 Cloud Spanner 团队工作,会尝试添加一些建议)
如上所述,批处理在这里很有用。特别是,我强烈建议在与其父索引 table 同一批次中创建二级索引。如果你不这样做,那么 Cloud Spanner 必须通过回填过程来确保新索引与基 table 一致,但如果基 table 和索引是同时创建的。请注意,这与我们通常为批量加载大型数据集提供的建议不同,因为在这种情况下,在创建二级索引之前批量加载数据通常会更快。
此外,在创建数据库时创建 table 和索引可能会更快。在 API 中,您可以通过在 createDatabase 操作的 extraStatements
字段中创建 table 和索引来完成此操作。您也可以直接从用户界面或 gcloud
.
综上所述,我建议:
- 为每个单独的开发人员数据库,创建所有 table 和索引 在创建数据库的同时。
它仍然不会立即生效,但这是您的最佳选择。使用这种方法,我只是尝试创建一个具有 100 tables 和每个 table 2 个二级索引的新数据库,我发现延迟比您报告的要低得多。