首页 > 数据库 >数据库相关

数据库相关

时间:2023-08-15 19:33:17浏览次数:39  
标签:事务 幻读 数据库 重复 脏读 相关 级别

事务:

概念

事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。

MySQL默认就是自动事务管理(自动开启事务,自动提交事务),一条sql语句就是一个事务

事务执行的过程中,若无异常,则会commit完成curd,若出现异常,则会rollback回滚到事务回滚点

四大特性(ACID)

  • 原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency):事务前后数据的完整性必须保持一致。
  • 隔离性(Durability):事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
  • 持久性(Isolation):多个用户并发操作数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。即事务之间互不干扰。

事务隔离级别:

为了达到事务的四大特性,数据库定义了4种不同的事务隔离级别,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。

脏读:事务A读到了事务B还未commit的内容,事务B若rollback,则事务A读到了不存在的内容即为脏读。

不可重复读:事务A在两次读取同一数据的过程中,若该数据在此期间被事务B修改,则事务A读取的同一数据内容不同,则为不可重复读。

幻读:事务A读取若无id=k的数据则插入,而在A刚读完确认没有id=4的数据时,事务B插入id=k的数据,则A在插入id=k的数据报错。类似于不可重复读,但不可重复读是读-读,而幻读是读-写。

级别名字隔离级别脏读不可重复读幻读数据库默认隔离级别
1 读未提交 read uncommitted  
2 读已提交 read committed Oracle
3 可重复读 repeatable read MySQL
4 串行化 serializable
  • READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
  • READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
  • REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
  • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。

需注意:

  • InnoDB 存储引擎默认使用 **REPEATABLE-READ(可重读)**
  • InnoDB 存储引擎在 分布式事务 的情况下一般会用到**SERIALIZABLE(可串行化)**隔离级别。

 

标签:事务,幻读,数据库,重复,脏读,相关,级别
From: https://www.cnblogs.com/Explosion556/p/17632237.html

相关文章

  • web端相关
    1什么是认证和授权 2 ......
  • 手把手教你学专利检索---欧洲专利局检索数据库
    原文链接:https://zhuanlan.zhihu.com/p/549997689欧洲专利局官方网站 http://worldwide.espacenet.com/欧洲专利局(EPO)的Espacenet专利检索数据库文献覆盖面广,可以免费检索全世界100多的国家的公开专利申请,目前专利文献收录量超过1.1亿篇。首页如图1。图1其中,“Classifacati......
  • Spring 与 Spring MVC 相关知识点回顾整合
    1.Spring框架1.1.Spring框架的作用Spring框架主要解决了创建对象和管理对象的相关问题。通过Spring创建并管理对象,可以使得开发者不再反复关心对象的创建过程,并且,默认情况下,由Spring创建的对象都是单例的,这是非常有必要的!由Spring创建的对象通常称之为SpringBean。由于Sp......
  • 「Note」字符串方向 - 自动机相关f
    1.AC自动机ACAM1.1.介绍AC自动机用于解决多模式串匹配问题,例如求多个模式串在文本串中的出现次数。显著地,它的应用实际上非常广泛。借助KMP的思想,我们对Trie树上的每个节点构造其失配指针\(fail_i\),指向对于当前字符串的最长后缀(其他(前缀)作为当前串后缀的最长的一个),......
  • mormot笔记一 连接数据库
    unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.Grids,Vcl.StdCtrls,mormot.db.sql,mormot.db.core,mormot.db.sql.oledb,mormot.c......
  • SQL Server不同库之间表数据复制(将A数据库的表复制到数据库B)
    SQLServer不同库之间表数据复制(将A数据库的表复制到数据库B) 源数据库-->任务-->导出数据    ......
  • 硬件管理平台-硬件网关-XML相关基础类
    硬件管理平台-硬件网关-XML相关基础类简介本章是硬件管理平台-硬件网关-插件模块-集成(上)的延申部分,因集成模块时还需要有配置文件的相关操作,因此需要将xml部分进行说明,其中需要说明的部分有xml的操作类、xml与硬件的交互类以及配置文件中对于xml的获取及操作。主要工作是约定xml......
  • 时序数据库TimescaleDB 功能介绍、单节点、集群安装部署、centos、linux
    简介TimescaleDocumentation|GettingstartedwithTimescaleTimescale是一个用于时间序列,事件和分析的PostgreSQL数据平台。提供了PostgreSQL的可靠性,这是时间序列的超能力TimescaleDB,。它提供自动备份和还原、复制的高可用性等功能,无缝缩放和调整大小等等性能对比:Ti......
  • Ubuntu相关
    查看防火墙状态sudoufwstatus开启防火墙sudoufwenable开放22端口sudoufwallow22开启完成,需要重启防火墙生效重启ufw防火墙sudoufwreload 查看内存占用free-m ......
  • 创建表空间及数据库用户
    select*fromdba_data_files;---查看用来导数据库的数据库数据文件路径信息----创建顺德一体化项目的数据库的对应的表空间。该数据库文件最少需要2个createtablespacesync_plus_1datafile'/u01/app/oracle/oradata/orcl/sync_plus_1_01.dbf'size500Mautoex......