Как мне избежать блокировок чтения в моей базе данных?

Как мне избежать блокировок чтения в моей базе данных?

Ответы на несколько баз данных приветствуются!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
6
0
4 573
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В SQL Server вы можете использовать ключевое слово with (nolock) в операторах выбора. Например:

Select table1.columna, table2.columna
from table1 with(nolock), table2 with(nolock)

Обязательно укажите (nolock) для каждой таблицы / представления в запросе.

Это означает, что вы читаете данные uncommitted с возможными катастрофическими результатами: stackoverflow.com/questions/686724/… Часто это не проблема, особенно с «новыми» функциями моментальных снимков, но вы должны знать о последствиях: codinghorror.com/blog/2008/08/deadlocked.html

Jeroen Wiert Pluimers 03.10.2013 11:42

У Джеффа Этвуда есть хороший пост на эту тему:

http://www.codinghorror.com/blog/archives/001166.html

Пожалуйста, хотя бы резюмируйте ответы, а не прямо ссылайтесь. Эта ссылка теперь мертва.

Joseph 05.10.2015 18:37

Обновленная ссылка (возможно): blog.codinghorror.com/deadlocked В основном пост рекомендует либо использовать подсказку запроса nolock, либо использовать уровень изоляции Read Committed Snapshot.

jakdep 31.05.2018 04:14
Ответ принят как подходящий

В Oracle режим работы по умолчанию - уровень изоляции Прочитано совершено, где оператор select не блокируется другой транзакцией, изменяющей данные, которые он читает. От Параллелизм и согласованность данных:

Each query executed by a transaction sees only data that was committed before the query (not the transaction) began. An Oracle query never reads dirty (uncommitted) data.

В Firebird писатели никогда не блокируют читателей и нет грязного чтения. Уровни изоляции только чтение-фиксация и моментальный снимок. Он использует механизм нескольких поколений (как я полагаю, oracle) вместо простой блокировки страницы или записи.

PostgreSQL также использует MVCC (Multi-Version Concurrency Control), поэтому, используя уровень изоляции транзакции по умолчанию (чтение-зафиксировано), вы никогда не должны блокировать, если кто-то не выполняет обслуживание этой БД (удаление / добавление столбцов / таблиц / индексов / и т. д.) .

Другие вопросы по теме