首页 > 数据库 >Postgresql 的默认隔离级别

Postgresql 的默认隔离级别

时间:2024-07-04 19:53:44浏览次数:22  
标签:事务 Postgresql 隔离 READ 默认 COMMITTED PostgreSQL 级别

PostgreSQL 的默认事务隔离级别是 READ COMMITTED

隔离级别概述

数据库的隔离级别决定了事务在并发环境下相互隔离的程度,从而影响到并发事务的行为。SQL 标准定义了四种隔离级别:

  1. READ UNCOMMITTED(未提交读)
  2. READ COMMITTED(提交读)
  3. REPEATABLE READ(可重复读)
  4. SERIALIZABLE(可串行化)

每种隔离级别解决不同类型的并发问题,包括脏读、不可重复读和幻读。以下是对每种隔离级别的简要描述:

  • READ UNCOMMITTED: 允许事务读取未提交的数据(可能导致脏读)。
  • READ COMMITTED: 只允许事务读取已提交的数据(防止脏读,但可能出现不可重复读)。
  • REPEATABLE READ: 保证在同一个事务内多次读取相同数据结果一致(防止脏读和不可重复读,但可能出现幻读)。
  • SERIALIZABLE: 最严格的隔离级别,通过强制事务串行执行来防止所有并发问题(防止脏读、不可重复读和幻读)。

PostgreSQL 的默认隔离级别

PostgreSQL 的默认隔离级别是 READ COMMITTED。在此隔离级别下,每个查询只能看到在查询开始之前已提交的数据。如果一个事务在运行过程中看到其他事务提交的数据,则会得到不同的结果,这就是不可重复读的现象。

如何查看和设置隔离级别

您可以通过以下方式查看和设置 PostgreSQL 的事务隔离级别:

查看当前会话隔离级别

SHOW TRANSACTION ISOLATION LEVEL;

设置当前会话隔离级别

SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED;

设置全局隔离级别

要设置 PostgreSQL 的全局隔离级别(即默认隔离级别),需要在 postgresql.conf 文件中进行配置,或通过 SQL 命令进行更改。修改 postgresql.conf 文件时,可以添加或编辑以下行:

default_transaction_isolation = 'read committed'

也可以使用 SQL 命令:

ALTER DATABASE your_database_name SET default_transaction_isolation TO 'read committed';

示例

查看当前会话的隔离级别

SHOW TRANSACTION ISOLATION LEVEL;

将当前会话的隔离级别设置为 REPEATABLE READ

SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ;

将当前事务的隔离级别设置为 SERIALIZABLE

BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- 执行事务操作
COMMIT;

结论

PostgreSQL 的默认事务隔离级别是 READ COMMITTED。这种隔离级别在大多数情况下提供了良好的性能和足够的数据一致性。根据具体应用需求,您可以在会话级别或事务级别调整隔离级别以适应特定的使用场景。

标签:事务,Postgresql,隔离,READ,默认,COMMITTED,PostgreSQL,级别
From: https://www.cnblogs.com/gongchengship/p/18284555

相关文章

  • linux安装netcore nginx postgresql ssh
    sudosu1.安装软件$sudoaptinstall软件名2.卸载软件$sudoaptremove软件名3.更新可用软件包列表$sudoaptupdate4.更新已安装的包$sudoaptupgrade通常安装完ubuntu之后,可以先使用upgrade更新一下当前系统中可以升级的的软件包$sudoaptupdate$sudoap......
  • 微信小程序-组件样式隔离
    一.isolatedisolated是自定义组件.js的options对象字段styleIsolation的默认值,表示自定义组件和组件使用者之间的样式相互独立,互不影响。写法:options:{//isolated默认值,开启样式隔离,使用者和自定义组件的样式相互不影响styleIsolation:"isolated"}二.app......
  • PostgreSQL学习之基于时间的认证
        设计        如果要限制用户在某一天的某时间段可以登录,某时间段不可以登录,在此做了一种简单的实现,通过pg_hba.conf文件配置时间段,示例如下:#TYPEDATABASEUSERADDRESSTIMEMETHOD#"local"isforUnixdomains......
  • PostgreSQL学习之使用LDAP认证
        PostgreSQL使用LDAP认证,简单说就是将用户名和密码存储在LDAP服务器上,postgresql数据库必须有相同的用户(用户名称相同,密码可以不同),当数据库客户端登录数据库时,数据库服务器不使用本地的密码校验机制而是去请求LDAP服务器验证用户名密码是否正确,正确则登录成功,失败......
  • vue elementUI el-tree 下拉树功能(包括搜索/默认高亮/展开下拉框默认定位于选中项的位
    <template><div><el-form:model="formData"ref="refFormData"label-width="180px"><el-form-itemlabel="景点"prop="location_id"><el-selectv-model="formData.location_name&qu......
  • win10设置.eddx文件默认用edraw max打开
    要在Windows10中将`.eddx`文件类型与EdrawMax关联,以便每次双击这类文件时都能自动使用EdrawMax打开,你可以按照以下步骤操作:1.打开文件资源管理器,找到一个`.eddx`文件。2.右键点击这个`.eddx`文件,然后选择“属性”。3.在弹出的窗口中,切换到“常规”标签页。4.点击“更改......
  • Windows 配置Conda 环境的默认路径
    在Windows环境下,示例通过以下步骤将Conda环境的默认路径更改为G:\AppCache\conda。1.打开命令提示符(CommandPrompt)按Win+R,输入cmd,然后按回车。2.使用condaconfig命令修改配置首先,设置环境路径:condaconfig--addenvs_dirsG:\AppCache\conda\envs然后,设置......
  • element plus 日历组件默认中文样式,配置日期周一为周起始日
    elementui或者plus其实都是西方的展示方式,日立组件的周日视为每一周的开始日期,我们则是周日为每周的最后一天。那咱们要改成周一为每周的开始日期,如下图:elementui是可以直接属性配置的,elementplus不得行,但是配置下面代码到main.ts就可以了~importElementPlusfrom'......
  • 【postgresql】表操作
    创建表(CREATETABLE):CREATETABLEtable_name(column1data_typeconstraint,column2data_typeconstraint,...);插入数据(INSERTINTO):INSERTINTOtable_name(column1,column2,...)VALUES(value1,value2,...);查询数据(SELECT):SELECTcol......
  • 【C++ | 继承】|概念、方式、特性、作用域、6类默认函数
    继承1.继承的概念与定义2.继承的方式2.1继承基本特性2.2继承的作用域2.2.1隐藏赋值兼容派生类的创建和销毁构造函数拷贝构造赋值重载1.继承的概念与定义继承是面向对象编程中的一个重要概念。它的由来可以追溯到软件开发中的模块化设计和代码复用的需求。在软件......