(я работаю в команде Cloud Spanner и постараюсь добавить некоторые предложения)
Как было упомянуто выше, пакетирование здесь полезно. В частности, я настоятельно рекомендую создавать вторичные индексы в том же пакете, что и их родительские таблицы. Если вы этого не сделаете, то Cloud Spanner придется пройти через процесс обратной засыпки, чтобы убедиться, что новый индекс соответствует базовой таблице, но это может привести к короткому замыканию, если базовая таблица и индекс создаются одновременно. Обратите внимание, что это отличается от совета, который мы обычно даем для массовой загрузки больших наборов данных, потому что в этом случае обычно быстрее выполнять массовую загрузку данных до создания вторичных индексов.
Кроме того, создание таблиц и индексов может быть быстрее при создании базы данных. В API вы можете сделать это, создав таблицы и индексы в поле extraStatements
операции createDatabase . Вы также можете сделать это прямо из пользовательского интерфейса или из gcloud
.
Итак, в заключение, я бы порекомендовал:
- Для каждой отдельной базы данных разработчиков создайте все таблицы и индексы
одновременно с созданием базы данных.
Это все еще не будет мгновенным, но это ваш лучший вариант. Используя этот подход, я просто попытался создать новую базу данных с 100 таблицами и 2 вторичными индексами на таблицу, и я смог увидеть намного меньшие задержки, чем вы сообщали.