{"Entry":{"collection":"guc","key":"transaction_isolation","name":"transaction_isolation","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Client Connection Defaults / Statement Behavior","category_zh":"","changed_in":["9.1","12"],"changes":[{"documentation_changed":false,"fields":{},"from":"8.4","status":"added","to":"9.0"},{"documentation_changed":false,"fields":{"boot_val":{"from":null,"to":"default"}},"from":"9.0","status":"changed","to":"9.1"},{"documentation_changed":true,"fields":{},"from":"9.5","status":"changed","to":"9.6"},{"documentation_changed":false,"fields":{"boot_val":{"from":"default","to":"read committed"},"enumvals":{"from":null,"to":["serializable","repeatable read","read committed","read uncommitted"]},"vartype":{"from":"string","to":"enum"}},"from":"11","status":"changed","to":"12"}],"content_hash":"d75c9baf1f56171b4fad7054aa13a97434ebb94de0c37fddb403910a82405bf2","context":"","default_changed_in":["9.1","12"],"default_history":[{"from":"9.0","to":"9.0","value":"Not specified"},{"from":"9.1","to":"11","value":"default"},{"from":"12","to":"19","value":"read committed"}],"derived_content_hash":"6552838ca9dc8701005d4ddac1c3d2a4083244b2b7d46fd0ce3556d968696a92","editorial":{"advice":{"olap":"For reporting, consider a read-only transaction and an isolation choice that matches snapshot requirements; use deferrability only with read-only serializable work.","oltp":"Choose transaction_isolation for correctness semantics first. Keep the common OLTP path explicit, then override only transactions whose consistency contract justifies different blocking or retry behavior.","small":"Do not change transaction_isolation as a generic speed tweak. Higher isolation or long snapshots can amplify contention and vacuum pressure on a small node."},"mechanism":["transaction_isolation sets the current transaction's isolation level. It reflects the current transaction, begins from default_transaction_isolation, and cannot be freely raised after the transaction has performed work.","transaction_isolation is session-settable but represents the current transaction; PostgreSQL restricts changes after the transaction has acquired a snapshot or performed conflicting work.","The default_* variables seed the corresponding transaction_* state. Isolation, read-only status, deferrability, retries, and snapshot lifetime must be designed together."],"pitfalls":["Changing transaction_isolation in one session and assuming role defaults, database defaults, or other pooled sessions changed with it.","Changing transaction semantics as a performance experiment and silently weakening an application's consistency contract.","Letting a pooled session retain transaction-related state because checkout or rollback/reset handling is incomplete.","Changing transaction_isolation globally without a rollback plan and a client or operational compatibility test."],"references":[{"title":"PostgreSQL 19 Beta 4: transaction_isolation","url":"https://www.postgresql.org/docs/19/runtime-config-client.html#GUC-TRANSACTION-ISOLATION"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["default_transaction_isolation","default_transaction_read_only","transaction_read_only","default_transaction_deferrable","transaction_deferrable"],"summary":"transaction_isolation is the PostgreSQL setting that defines the current transaction's isolation level."},"enumvals":[],"first_version":"9.0","group":"Client Connection Defaults","group_slug":"client","imported_at":"2026-09-27T17:57:32.23125+08:00","intro_commit":{},"key":"transaction_isolation","last_version":"20","max_val":"","min_val":"","name":"transaction_isolation","position":435,"present_in":["9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"repair_provenance":{"original_source_revision":"english-manuals:8557736f4b7249ad7b4f36a1b93c3999277f6bd03290135840e7092c068becfd","receipt_sha256":"c2691ca541593a334ab8c89465e6ba0a09faf33f6c3af32ad3353f40d11b1063","repair":"wiki-repair-20261023"},"short_desc":"This parameter reflects the current transaction's isolation level.","short_desc_zh":"","source_rev":"wiki-repair-20261023:f76d627593a91aa619a1c2ffa338dc4a204c59f2830cb5a77be2c6942deaf6da","unit":"","vartype":"enum"}},"Definition":{"Collection":"guc","Key":"transaction_isolation","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"transaction_isolation","SourceRevision":"wiki-repair-20261023:f76d627593a91aa619a1c2ffa338dc4a204c59f2830cb5a77be2c6942deaf6da","Facts":{"boot_val":"read committed","category":"Client Connection Defaults / Statement Behavior","context":"user","description":"This parameter reflects the current transaction's isolation level. At the beginning of each transaction, it is set to the current value of default_transaction_isolation. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command.","description_zh":"此参数反映当前事务的隔离级别。在每个事务开始时，它被设置为 default_transaction_isolation 的当前值。任何后续更改它的尝试都相当于 SET TRANSACTION 命令。","description_zh_html":"\u003cp\u003e\n        此参数反映当前事务的隔离级别。在每个事务开始时，它被设置为 \u003ca class=\"xref\" href=\"/zh/docs/18/runtime-config-client.html#GUC-DEFAULT-TRANSACTION-ISOLATION\"\u003edefault_transaction_isolation\u003c/a\u003e 的当前值。任何后续更改它的尝试都相当于 \u003ca class=\"xref\" href=\"/zh/docs/18/sql-set-transaction.html\" title=\"SET TRANSACTION\"\u003e\u003cspan class=\"refentrytitle\"\u003eSET TRANSACTION\u003c/span\u003e\u003c/a\u003e 命令。\n       \u003c/p\u003e","doc":{"anchor":"GUC-TRANSACTION-ISOLATION","file":"runtime-config-client.html","lang":"en","sha256":"6be6cc70f29eca4695dc43b2b2b94c75b7e0eaaa2c00273d7a98488917a7edb7","slug":"18"},"documented":true,"enumvals":["serializable","repeatable read","read committed","read uncommitted"],"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"transaction_isolation","short_desc":"Sets the current transaction's isolation level.","source":"pg-settings-source-snapshot","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-client.html","sha256":"1882f8fd5576909c4fcc44af53077378871e05f5be67723f20fe300273024767"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"enum","zh_from":"same-version-pgdoc"},"ManualEvidence":{"doc":{"anchor":"GUC-TRANSACTION-ISOLATION","file":"runtime-config-client.html","lang":"en","sha256":"6be6cc70f29eca4695dc43b2b2b94c75b7e0eaaa2c00273d7a98488917a7edb7","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"transaction_isolation","SourceDatabase":"center","Version":"18","Locale":"en","Title":"transaction_isolation","Summary":"This parameter reflects the current transaction's isolation level. At the beginning of each transaction, it is set to the current value of default_transaction_isolation. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command.","BodyHTML":"\u003cp\u003eThis parameter reflects the current transaction\u0026#39;s isolation level. At the beginning of each transaction, it is set to the current value of default_transaction_isolation. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command.\u003c/p\u003e","SourceRevision":"wiki-repair-20261023:f76d627593a91aa619a1c2ffa338dc4a204c59f2830cb5a77be2c6942deaf6da","ContentHash":"c95b0b0c46d601cf71169af15fca4c269169b26da599db16647589ae5bf7210c","Payload":{"description":"This parameter reflects the current transaction's isolation level. At the beginning of each transaction, it is set to the current value of default_transaction_isolation. Any subsequent attempt to change it is equivalent to a SET TRANSACTION command."}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
