首页 > 数据库 >数据库事务

数据库事务

时间:2022-11-05 14:02:13浏览次数:49  
标签:事务 读取 幻读 数据库 修改 数据 重复

事务是逻辑上的一组操作,要么都执行,要么都不执行。

事务的四大特性(ACID)

原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。

一致性(Consistency):执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同。

隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的。

持久化(Durablity):一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

并发事务带来哪些问题?

脏读(Dirty read):当一个事务正在访问数据并且对数据进行修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。

丢失修改(Lost to modify):指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。

不可重复读(Unrepeatableread):指在一个事务内多次读同一个数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。

幻读(Phantom read):幻读与不可重复读类似。它发生在一个事务读取了几行数据,接着另一个并发事务插入了一些数据时。在随后的查询中,第一个事务就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

不可重复读和幻读区别:

不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现记录增多或减少了。

事务隔离级别:

SQL标准定义了四个隔离级别:

read-uncommitted(读取未提交):最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。

read-committed(读取已提交):允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。

repeatable-read(可重复读):对同一个字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以防止脏读和不可重复读,但幻读仍有可能发生。

serializable(可串行化):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完成不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。


标签:事务,读取,幻读,数据库,修改,数据,重复
From: https://blog.51cto.com/u_11315052/5825953

相关文章

  • SQL 注入之:SQL Server 数据库
    郑重声明:本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人......
  • 【数据库系统概论】实验五 SQL数据库安全控制
    一、实验目的1.掌握SQLServer数据库用户基本操作2.掌握SQLServer数据库授权及回收权限的方法二、实验内容创建登录用户st1,st2使st1,st2成为stu_db的合法用户EXECsp_grant......
  • 数据库设计心得——强者如云,使命必达
        小组成员:刘楠、罗钰、沈煜、卢小柯、叶宸宇    对于数据库的设计,要在能够实现业务需求的前提下,对表进行一定的拆分,使数据库中的表能够符合范式要求。......
  • 长事务 (Long Transactions)
    长事务长事务用于支持AutoCAD参照编辑功能,对于ObjectARX应用程序非常有用。这些类和函数为应用程序提供了一种方案,用于签出实体以进行编辑并将其签回其原始位......
  • 清理分布式事务时hang住
    1.清理分布式事务语句:select'rollbackforce'||''''||local_tran_id||''''||';'"RollBack"fromdba_2pc_pendingwherestate='prepared';select'execdbms_transactio......
  • 第三十七章 构建数据库应用程序 - 在页面上使用对象
    第三十七章构建数据库应用程序-在页面上使用对象CSP最强大的方面之一是,它允许创建可以直接与内置对象数据库交互的动态网页。这意味着可以快速构建以下数据库应用程序......
  • 数据库设计心得-鳖在这理发店
    基于医患对话的医学提取工具1.项目简介疫情时代患者线下就诊的成本大大的提高,医生的时间成本亦大大增加;对于这些问题,现提出一小程序,为医生线上看诊提供症状诊断,智能医疗......
  • Matomo使用IP 2 Location数据库提升地域分析精度
    Matomo提供的默认地理位置数据库只能定位到国家,DBIP或GeoIP2的IP精度也很差,所以需要使用其他IP库提升地域分析的精度。首先打开Matomo后台,依次点击平台>商城>搜索插件:IP......
  • Matomo使用IP 2 Location数据库提升地域分析精度
    Matomo提供的默认地理位置数据库只能定位到国家,DBIP或GeoIP2的IP精度也很差,所以需要使用其他IP库提升地域分析的精度。首先打开Matomo后台,依次点击平台>商城>搜索插件:IP2......
  • 数据库设计心得——千朵玫瑰带来的黎明
    数据库设计心得——千朵玫瑰带来的黎明1.项目简介与背景随着中国工业化的高速发展,公路总里程已经达到525万公里,大桥数量已经超过100万座。因此,如何针对路面和桥梁的缺陷......