广告
返回顶部
首页 > 资讯 > 数据库 >postgresql事务处理与并发控制
  • 234
分享到

postgresql事务处理与并发控制

2024-04-02 19:04:59 234人浏览 安东尼
摘要

postgresql事务处理与并发控制:事务是postgresql中的基本工作单元,是用户定义的一个数据库操作序列。这些操作要么全做,要么全不做,是一个不可分割的工作单位。在postgresql中,事务管理

postgresql事务处理与并发控制:

事务postgresql中的基本工作单元,是用户定义的一个数据库操作序列。这些操作要么全做,要么全不做,是一个不可分割的工作单位。

在postgresql中,事务管理器负责管理事务运行的模块(模块有:管理器和日志管理器)

事务管理器是事务系统的中枢,通过接受信息,处理下一步的事务操作。

 锁管理器主要提供事务的写阶段并发控制所需的 各种锁,从而保证事务的各种隔离级别。

 日志管理器主要记录事务执行的状态和数据的变化过程。

事务开始后,事务中的所有操作都会写到事务日志中。写到日志中的事务一般有两种:一种是针对数据的操作,如插入、修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引。当取消这些事务操作时,系统自动执行这种操作的反操作,保证系统的一致性。系统自动生成一个检查点机制。这个检查点周期地检查事务日志,如果在事务日志中,事务全部完成,检查点事务日志中的事务就提交到数据库 中,并且在事务日志中做一个检查点提交表示。如果在事务日志中,事务没有完成,检查点就不会讲事务日志中的事务提交到数据库中,并会在事务日志中做一个检查点未提交的标识。事务的恢复及检查点保证了系统的完整和可恢复。


1、事务的属性

   事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单位必须有4个属性,即原子性、一致性、隔离性和持久性属性,简称ACID属性,只有这样才能成为一个事务。

 原子性:事务必须是原子工作单元;对于数据修改,要么全都执行,要么全都不执行。

 一致性:事务在完成时,必须使所有的数据都保持一致。

 隔离性:由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态要么是第二个并发事务修改之前的状态,要么是第二个事务修改之后的状态,不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

 持久性:事务完成之后,对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

 

2、事务块管理的常用语句:

   在postgresql里,一个事务是通过把SQL命令用:begin 和 commit命令包围实现的。事务块是指包围在begin 和 commit之间的语句。在postgresql9中,常用的事务块管理语句的含义如下:

 start transaction:表示开始一个新的事务块。

 begin:表示初始化一个事务块 。

 commit:表示提交事务;

 rollback:表示事务失败时执行回滚操作。

 set transaction:设置当前事务的特性,对后面的事务么有影响。


3、postgresql的并发控制

3.1、脏读:

  当一个事务读取的记录时另一个事务的一部分时,如果第一个事务正常完成,就没有什么问题,如果此时另一个事务未完成,就会产生脏读。


3.2、幻读:

  当某一数据执行insert 或 delete操作,而该数据行恰好属于某个事务正在读取的范围时,就会发生幻读现象。比如在运行update语句的同时执行insert操作,因为插入了一个新记录行,所以没有锁定,并且能够珍惜。


3.3、不可重复性读取:

  如果一个事务不止一次地读取相同的记录,但在两次读取中间有另一个事务刚好修改了数据,则两次读取的数据将出现差异,此时就发生了非重复读取。


3.2、postgresql的事务隔离级别:


《隔离级别》   《脏读》   《幻读》   《不可重复性读取》

读未提交            可能          可能          可能

读已提交           不可能        可能          可能

可重复读           不可能        可能          不可能

可串行读           不可能        不可能        不可能


   在postgresql里,可以请求4种可能的事务隔离级别的任意一种。但是在内部,实际上只有两种独立的隔离级别,分别对应:读已提交 和 可串行化。也就是说,如果选择了读未提交的级别,实际上使用的是读已提交。在选择可重复读级别的时候,实际上用的是可串行化,所以实际的隔离级别可能比选择的更严格。postgresql只提供两种隔离级别的原因是:这是把标准的隔离级别与多版本并发控制架构映射相关的唯一合理方法。


postgresql中的两种隔离级别如下:

①:读已提交:

   读已提交是postgresql里的默认级别。当一个事务运行在这个隔离级别时,一个select查询只能看到查询开始之前已提交的数据,而无法看到未提交的数据或者在查询执行期间其他事务已经提交的数据。

   如果两个事务在对同一组数据进行更新操作,那么第二个事务需要等待第一个事务提交或者更新回滚。如果第一个事务进行提交,系统将重新计算查询条件,符合条件后第二个事务继续进行更新操作;如果第一个事务进行更新回滚,那么他的作业将被忽略,第二个事务将继续更新最初发现的行。


②:可串行化:

   可串行化基本提供最严格的事务隔离。这个级别模拟串行的事务执行,就好像事务将一个接着一个地串行(而不是并行)执行。不过,使用这个级别的应用必须准备在串行化失败的时候重新启动事务。

   如果两个事务在对同一组数据进行更新操作,那么串行化事务就将等待第一个正在更新的事务提交或回滚。如果第一个事务提交了,那么串行化事务将回滚,从头开始重新进行整个事务;如果第一个事务回滚,那么它的影响将被忽略,这个可串行化的事务就可以在该元祖上进行更新操作。


您可能感兴趣的文档:

--结束END--

本文标题: postgresql事务处理与并发控制

本文链接: https://www.lsjlt.com/news/34900.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • postgresql事务处理与并发控制
    postgresql事务处理与并发控制:事务是postgresql中的基本工作单元,是用户定义的一个数据库操作序列。这些操作要么全做,要么全不做,是一个不可分割的工作单位。在postgresql中,事务管理...
    99+
    2022-10-18
  • 深入剖析MongoDB的事务处理与并发控制机制
    深入剖析MongoDB的事务处理与并发控制机制摘要:MongoDB是一种流行的NoSQL数据库,它以其高性能和可扩展性而闻名。然而,MongoDB最初并不支持事务处理和并发控制,这在某些情况下可能引发数据一致性和完整性的问题。为了解决这些问...
    99+
    2023-11-04
    MongoDB 事务处理 并发控制
  • 深入理解 MySQL ——锁、事务与并发控制
    本文首发于vivo互联网技术微信公众号作者:张硕本文对 MySQL 数据库中有关锁、事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从而在业务系...
    99+
    2022-10-18
  • PostgreSQL事务处理机制原理
    本篇内容主要讲解“PostgreSQL事务处理机制原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL事务处理机制原理”吧!背景说明:以ACI...
    99+
    2022-10-18
  • MySQL分布式事务处理与并发控制的项目经验解析
    MySQL分布式事务处理与并发控制的项目经验解析近年来,随着互联网的迅猛发展和用户数量的不断增加,对于数据库的要求也日益提高。在大型分布式系统中,MySQL作为最常用的关系型数据库管理系统之一,一直扮演着重要的角色。但是,随着数据规模的增大...
    99+
    2023-11-02
    并发控制 MySQL分布式事务处理 项目经验解析
  • MySQL之并发控制和事务
    并发控制锁粒度:表级锁行级锁锁:读锁:共享锁,只读不可写,多个读互不阻塞,写锁:独占锁,排它锁,一个写锁会阻塞其它读和写锁实现存储引擎:自行实现其锁策略和锁粒度服务器级:实现了锁,表级锁;用户可显式请求分类...
    99+
    2022-10-18
  • Boltdb学习笔记之三--事务与并发控制
    ...
    99+
    2021-06-02
    Boltdb学习笔记之三--事务与并发控制
  • MySQL事务与并发控制的知识点有哪些
    这篇文章主要介绍了MySQL事务与并发控制的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL事务与并发控制的知识点有哪些文章都会有所收获,下面我们一起来看看吧。事务概念一个事务可以理解为一组...
    99+
    2023-07-05
  • mysql并发事务控制的过程介绍
    本篇内容主要讲解“mysql并发事务控制的过程介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql并发事务控制的过程介绍”吧!1、单版本控制锁。锁以独占的方式确保事务在只有一个版本的情况...
    99+
    2023-06-20
  • C#开发注意事项:多线程编程与并发控制
    在C#开发中,面对不断增长的数据和任务,多线程编程和并发控制显得尤为重要。本文将从多线程编程和并发控制两个方面,为大家介绍一些在C#开发中需要注意的事项。一、多线程编程多线程编程是一种利用CPU多核心资源提高程序效率的技术。在C#程序中,多...
    99+
    2023-11-22
    多线程编程 并发控制 C#开发
  • ⑩⑧【MySQL】InnoDB架构、事务原理、MVCC多版本并发控制
    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ InnoDB存储引擎 ⑩⑧【MySQL】详解I...
    99+
    2023-12-22
    mysql 架构 数据库 MVCC 事务 并发
  • MySQL事务隔离实现并发控制的示例分析
    这篇文章主要介绍了MySQL事务隔离实现并发控制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、并发访问控制实现的并发访问的控制技术是基于锁;锁分为表级锁和行级锁...
    99+
    2023-06-20
  • MySQL系列之十 MySQL事务隔离实现并发控制
    目录一、并发访问控制二、事务Transactions1、事务遵循ACID原则:2、事务的生命周期3、事务的隔离级别4、死锁一、并发访问控制 实现的并发访问的控制技术是基于锁; 锁分为...
    99+
    2022-11-12
  • PHP开发中如何处理分布式锁和并发控制
    在高并发的web应用开发中,分布式锁和并发控制是必不可少的技术手段。本文将介绍如何使用PHP处理分布式锁和并发控制,并附带具体代码示例。分布式锁的概念分布式锁是指在分布式系统中保证某一个资源的数据操作顺序性和一致性的机制。在高并发场景下,分...
    99+
    2023-10-21
    分布式锁 并发控制 PHP开发
  • Spring事务处理Transactional,锁同步和并发线程
    Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。 未授权读取(Read Uncommitted): 也称 ...
    99+
    2022-11-12
  • controller的异常处理及service层的事务控制方法
    这篇文章主要介绍了controller的异常处理及service层的事务控制方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇controller的异常处理及service层的事务控制方法文章都会有所收获,下面...
    99+
    2023-06-29
  • 如何处理Go语言中的并发文件版本控制问题?
    如何处理Go语言中的并发文件版本控制问题?在开发过程中,多人同时对同一个文件进行修改是很常见的情况。为了避免冲突和数据丢失,需要一种有效的并发文件版本控制机制。在Go语言中,可以通过使用读写锁来实现这一目标。读写锁是一种特殊的锁,允许多个线...
    99+
    2023-10-22
    文件 并发 版本控制
  • Spring事务处理Transactional和并发线程的方法是什么
    本篇内容介绍了“Spring事务处理Transactional和并发线程的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Sprin...
    99+
    2023-06-22
  • MySQL MVCC 原理揭秘:如何处理并发事务的读写冲突?
    MySQL MVCC 原理揭秘:如何处理并发事务的读写冲突?引言:在数据库系统中,事务的并发执行是必不可少的。然而,并发执行也带来了一系列的问题,其中之一就是读写冲突。当多个事务同时读写同一个数据时,就可能出现不一致的情况。为了解决这个问题...
    99+
    2023-10-22
    并发 事务 冲突
  • 关于controller的异常处理及service层的事务控制方式
    目录controller异常处理及service层的事务控制controller层Exception异常事务回滚失效问题Spring的@Transactional源码中写道测试①测试...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作