Postgresql

什麼是自動送出的隔離級別?

  • April 7, 2021

我試圖從“自動送出”概念中理解。

最初我在 Java JDBC API Connection.setAutoCommit(boolean autoCommit)的上下文中對此很感興趣

快速搜尋發現該術語並非特定於 JDBC,PostgreSQL 也指“自動送出”:

https://www.postgresql.org/docs/current/sql-start-transaction.html

在標準中,不必發出START TRANSACTION啟動事務塊:任何 SQL 命令都隱式地開始一個塊。PostgreSQL 的行為可以被看作是在每個不跟隨START TRANSACTION(或BEGIN)的命令之後隱式發出一個 COMMIT,因此它通常被稱為**“自動送出”。為了方便起見,其他關係數據庫系統可能會提供自動送出**功能。

如果它很普遍**,自動送出模式的隔離級別是什麼**?

從概念上講,因為在隱式隔離級別之前我們只有一個 SQL 語句COMMIT ,因此自動送出幾乎沒有意義。只有 READ UNCOMMITTED 可能會影響結果,其他異常以 SQL 語句序列的形式定義。

我可以將自動送出隔離級別更改為/遠離未送出的閱讀嗎?

預設隔離級別通過default_transaction_isolation控制,並且read committed在標準安裝中。

您可以使用以下命令檢查目前設置:

show default_transaction_isolation;

由於 Postgres 不支持(或實現)read uncommitted,因此無需更改此“遠離未送出的讀取”。

如果您想將隔離級別更改為“更高”級別,即使在自動送出模式下,您也可以使用:

set default_transaction_isolation = serializable;

以上將更改目前會話(=連接)的預設值。

引用自:https://dba.stackexchange.com/questions/289406