Улучшение вызовов метаданных Snowflake в API-интерфейсах ODB C и JDB C - PullRequest
0 голосов
/ 26 февраля 2020

Мы видели ряд вопросов о том, как избежать получения метаданных по всем объектам, когда указана только конкретная база данных c или схема базы данных. Это помогает повысить производительность операций с метаданными и снизить накладные расходы, особенно для клиентов Snowflake с очень большими развертываниями, которые могут содержать большое количество баз данных, схем, таблиц и представлений.

Данные о снежинках хранятся в базах данных, каждая база данных состоит из одной или нескольких схем. Объекты базы данных, такие как таблицы и представления, логически сгруппированы в этих схемах базы данных.

Если в таблице, схеме или базе данных есть символ подчеркивания в имени, вызовы getMetaData должны обрабатываться определенным образом c. Интерпретация символа подчеркивания по умолчанию в вызовах ODB C и JDB C будет заключаться в том, чтобы обрабатывать его как символ подстановки, т. Е. Ссылка на конкретную c схему database1.schema_name фактически извлечет все метаданные в базе данных1. Аналогичная интерпретация применима и к соглашениям об именах баз данных и таблиц.

Чтобы избежать использования символа подчеркивания в качестве подстановочного знака и извлечения метаданных для всех объектов, необходимо использовать символ обратной косой черты sh "\" перед символом подчеркивания, чтобы избежать подчеркивания, используемого в качестве символа подстановки. Затем драйверы будут правильно определять указанный c путь для объектов для выполнения вызова метаданных.

Что-нибудь еще, что должно быть указано?

1 Ответ

0 голосов
/ 27 февраля 2020

Сталкивались ли вы перед параметром сеанса снежинки CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX?

Из документов :

По умолчанию, если база данных и схема не указаны ( т.е. вы передаете значения NULL как для базы данных, так и для схемы), затем эти методы / функции возвращают метаданные обо всех базах данных и всех схемах.

Обратите внимание, что получение метаданных для всех баз данных и всех схем может временно потреблять достаточно ресурсов для воздействия производительность.

Чтобы избежать этого потенциального влияния на производительность, установите для параметра CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX значение TRUE. Когда параметр включен, если аргументы базы данных и схемы оба имеют значение NULL, эти методы / функции извлекают метаданные только для текущей базы данных и схемы на основе текущего контекста соединения. Этот параметр также может влиять на поведение метода / функции при передаче одного, но не обоих аргументов базы данных и схемы.

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

...