Создание таблиц гаечного ключа и индексов, кажется, занимает много времени - PullRequest
0 голосов
/ 16 мая 2018

Мы создаем прототипы, настраивая отдельные базы данных для каждого разработчика на одном экземпляре экземпляра узла GCP Spanner 1, и заметили, что создание таблиц занимает ~ 20 секунд, а создание индексов - 60-120 секунд.Это нормально?Можно ли что-нибудь сделать, чтобы улучшить эти сроки?Мы последовательно создаем эти объекты в пакете, используя инструменты консоли GCP, и использовали Squirrel.Консоль GCP выглядит немного быстрее, но автоматизировать процесс создания будет сложно.

Общая картина: существует около 10+ баз данных с примерно 70+ таблицами с более чем 60 индексами для каждого разработчика (более 15 разработчиков), которые необходимо настроить.В реляционном мире это заняло несколько секунд.С Spanner это занимает часы, чтобы настроить для каждого разработчика.Будем весьма благодарны за любые предложения о том, как улучшить это.

1 Ответ

0 голосов
/ 17 мая 2018

(я работаю в команде Cloud Spanner и постараюсь добавить некоторые предложения)

Как было упомянуто выше, пакетирование здесь полезно. В частности, я настоятельно рекомендую создавать вторичные индексы в том же пакете, что и их родительские таблицы. Если вы этого не сделаете, то Cloud Spanner придется пройти через процесс обратной засыпки, чтобы убедиться, что новый индекс соответствует базовой таблице, но это может привести к короткому замыканию, если базовая таблица и индекс создаются одновременно. Обратите внимание, что это отличается от совета, который мы обычно даем для массовой загрузки больших наборов данных, потому что в этом случае обычно быстрее выполнять массовую загрузку данных до создания вторичных индексов.

Кроме того, создание таблиц и индексов может быть быстрее при создании базы данных. В API вы можете сделать это, создав таблицы и индексы в поле extraStatements операции createDatabase . Вы также можете сделать это прямо из пользовательского интерфейса или из gcloud.

Итак, в заключение, я бы порекомендовал:

  • Для каждой отдельной базы данных разработчиков создайте все таблицы и индексы одновременно с созданием базы данных.

Это все еще не будет мгновенным, но это ваш лучший вариант. Используя этот подход, я просто попытался создать новую базу данных с 100 таблицами и 2 вторичными индексами на таблицу, и я смог увидеть намного меньшие задержки, чем вы сообщали.

...