можете ли вы параллельно ОБНОВЛЯТЬ разные строки в одной таблице в SnowFlake

#sql-update #snowflake-cloud-data-platform

#sql-обновление #snowflake-cloud-data-platform

Вопрос:

Мне было интересно, могу ли я использовать ОБНОВЛЕНИЕ для разных строк в одной таблице одновременно в snowflake. Например, могу ли я получить инструкции UPDATE для блокировки только одной обновляемой строки, а не для блокировки всей таблицы?

Комментарии:

1. Пожалуйста, предоставьте образцы данных и желаемые результаты, а также create table инструкцию для вашей таблицы. В нынешнем виде ваш вопрос слишком широк, чтобы на него можно было ответить точно.

2. Я не собираюсь иметь таблицу даже. Я более или менее не могу найти ответ на вопрос «можете ли вы заблокировать отдельные строки в таблице SnowFlake, в отличие от блокировки всей таблицы при ОБНОВЛЕНИИ». Я планирую стратегию выполнения для многопоточности проекта веб-очистки.

3. По-видимому, Snowflake блокируется на уровне раздела, но я никогда не видел, чтобы это работало так, чтобы два оператора могли одновременно изменять данные в таблице. Кажется, что это всегда блокирует всю таблицу.

Ответ №1:

Вы не можете заблокировать на уровне одной строки в Snowflake.

Мое лучшее предложение — создать INSERT единственный проект, поскольку они не будут блокировать друг друга:

Большинство инструкций INSERT и COPY записывают только новые разделы. Эти инструкции часто могут выполняться параллельно с другими операциями ВСТАВКИ и копирования, а иногда могут выполняться параллельно с инструкцией UPDATE, DELETE или MERGE.

https://docs.snowflake.com/en/sql-reference/transactions.html

Если вы планируете запускать большое количество одновременных INSERT операций, подумайте о переходе на один из этих подходов:

  • Snowpipe
  • Соединитель Snowflake для Kafka

https://docs.snowflake.com/en/user-guide/data-pipelines-intro.html