сбросить план выполнения для параметризованного запроса гаечным ключом - PullRequest
0 голосов
/ 01 августа 2020

Мы выполнили один и тот же параметризованный запрос на двух разных экземплярах гаечного ключа, оба экземпляра использовали версию 2 оптимизатора. В одном случае оптимизатор выбрал правильный экземпляр, в результате чего было прочитано только 30 строк, а в другом случае оптимизатор не выбрал индекс, и, следовательно, для этого большого объема выполненного параметризованного запроса было выполнено сканирование таблицы из 3 миллионов строк. Наборы данных в двух экземплярах различаются. Однако, учитывая, что для статистики распределения данных доступно 3 миллиона строк, мы считаем, что оптимизатор должен иметь правильную информацию для выбора правильного индекса.

Запрос был очень простым, как показано ниже:

Выберите col1, col2 col3 из table_a, где col4 = @ parameter1 и col5 = @ parameter2

Индекс был на col4, col5 сохранял col3. Он должен прочитать базовую таблицу для col1, col2

Есть ли способ сбросить план выполнения параметризованного запроса на Spanner?

Есть ли способ проверить информацию о распределении данных для table / index?

Будем признательны за любые другие предложения о том, как определить, почему оптимизатор не выбрал индекс. Мы действительно не хотим принудительно использовать индекс в запросах Spanner, если это возможно.

1 Ответ

0 голосов
/ 05 августа 2020

Согласно поддержке Google, вы не можете сбросить параметризованный план выполнения и не можете видеть информацию о распределении данных для таблицы / индекса.

Все еще ждете ответа от службы поддержки Google, почему выбирают две среды разные планы исполнения. Я думаю, что это как-то связано с данными в каждой таблице в каждой среде, которая в моем случае не идентична.

...