Что делает подсказка USE_ADDITIONAL_PARALLELISM в Cloud Spanner - PullRequest
0 голосов
/ 21 февраля 2020

В do c мы можем найти подсказку запроса с именем USE_ADDITIONAL_PARALLELISM здесь: https://cloud.google.com/spanner/docs/query-syntax#statement -hints

Однако документация для нее очень коротка. Насколько я понимаю, это будет распространять один запрос для выполнения на нескольких узлах. Это верно?

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

PS: он был изначально представлен в потоке Использование нескольких «различающихся счетчиков» оказывает огромное влияние на производительность

1 Ответ

1 голос
/ 21 февраля 2020

Запрос Cloud Spanner может иметь несколько уровней распространения. Подсказка запроса USE_ADDITIONAL_PARALLELISM приведет к тому, что узел, выполняющий запрос, попытается выполнить предварительную выборку результатов подзапросов далее в очереди распространения. Это может быть полезно в сценарии ios, например, при запросах, выполняющих полное сканирование таблицы или полное сканирование таблицы с такими агрегатами, как COUNT(), MAX, MIN et c. где идентичные подзапросы могут быть распределены по многим разделениям, и где отдельные подзапросы к разделениям возвращают относительно мало данных (таких как состояние агрегации). Однако если отдельные подзапросы возвращают значимые данные, то использование этой подсказки может привести к значительному увеличению использования памяти на узле-потребителе go из-за предварительной выборки.

...