Имеет ли DB2 для z/OS уровень изоляции, аналогичный READ ONLY в Oracle?
Имеет ли DB2 для z/OS уровень изоляции, аналогичный READ ONLY в Oracle? Мне нужно реализовать несколько больших выборок в DB2, а также мне нужно получить согласованные данные, которые были зафиксированы вовремя, когда были запущены запросы, поэтому мне нужно что-то вроде "уровня изоляции моментальных снимков". Насколько я знаю, в Oracle это можно реализовать с помощью уровня изоляции READ ONLY, но как насчет DB2 for z/OS?
2 ответа
DB2 для z/OS не имеет уровня изоляции "только для чтения" (как и Oracle, поскольку "только чтение" является состоянием транзакции, а не уровнем изоляции).
Вы можете избежать ожидания блокировок по запросам, если используете опцию разрешения одновременногозафиксированного доступа, однако обратите внимание, что она не реализует "изоляцию моментального снимка" как таковую - запрос, использующий эту опцию, увидит последние зафиксированные изменения, даже если те изменения были зафиксированы после начала запроса.
E сть FOR READ ONLY
предложение в DB2 z/OS. Вы добавляете его в конце вашего запроса.
Для таблиц, в которых разрешены обновления и удаления, указание FOR READ ONLY может повысить производительность операций FETCH, поскольку DB2 может блокировать и исключать эксклюзивные блокировки. Например, в программах, которые содержат динамические операторы SQL без предложения FOR READ ONLY или ORDER BY, DB2 может открывать курсоры, как если бы было указано предложение UPDATE.
Вот статья Инфо-центр с дополнительной информацией.
Если вы действительно ищете версию DB2 "Serializable", то вы ищете Repeatable Read.