Я хочу понять, почему мы не используем ключевое слово NOLOCK в конце запросов SQL, которые выполняются в Impala, Hive или MySQL. Например, я использую на работе и Hive, и Impala через рабочую среду Cloudera. Cloudera Workbench не распознает ключевое слово NOLOCK. Точно так же я использовал MySQL и раньше. Даже там NOLOCK не сработает. Почему нам не нужно использовать NOLOCK с Hive, Impala, MySQL или Big Query?
Отказ от ответственности: я хочу уточнить, что у меня есть хорошее представление о функции NOLOCK и ее вариантах использования. Этот вопрос связан с разновидностями SQL, которые не требуют NOLOCK.
2 ответа
Прежде всего, давайте уточним, что такое НОЛОК. Табличная подсказка NOLOCK позволяет переопределить уровень изоляции транзакций по умолчанию (READ COMMITTED). NOLOCK = READ UNCOMMITTED
уровень изоляции транзакций, который позволяет запросу видеть изменения данных перед фиксацией транзакции, изменяющей данные.
Hive не поддерживает такой уровень изоляции (READ UNCOMMITTED
) даже в режиме транзакций. Oracle также не поддерживает READ UNCOMMITTED
, поэтому в этих базах данных нет необходимости в подсказке NOLOCK
.
В Hive вы можете отключить параллелизм.
В дополнение к @leftjoin:
В настоящее время поддерживается только изоляция на уровне моментальных снимков. Когда данный запрос запускается, ему будет предоставлен согласованный снимок данных. Не поддерживается грязное чтение, зафиксированное чтение, повторяемое чтение или сериализуемое. С введением BEGIN цель состоит в том, чтобы поддерживать изоляцию моментальных снимков на время транзакции, а не только один запрос. Другие уровни изоляции могут быть добавлены в зависимости от запросов пользователей.
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions#HiveTransactions-Configuration
Похожие вопросы
Связанные вопросы
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.