首页 > 数据库 >数据库事物和事物的隔离级别

数据库事物和事物的隔离级别

时间:2023-02-18 21:33:36浏览次数:33  
标签:读取 事物 提交 数据 数据库 隔离

一、事物的特性

原子性: 同一个事物的多个操作要么同时成功,要么同时失败

一致性: 事物操作前后数据库的数据整体上要保持一致,例如一个转账操作中,A账号转出的钱一定和B账号转入的钱是相等的,两个账号的余额整体上要保持一致。

隔离性: 多个事物操作之间是相互隔离的

持久性

二、事物的隔离级别

多个事物并发操作数据库时会产生一些问题

脏读: 一个事物读取到另一个事物未提交的数据并基于此进行操作,而另一个事物最后回滚了自己的结果,这样第一个事物就会基于错误的结果进行计算。

不可重复读: 事物A在处理过程中多次读取同一个数据,事物B在中间修改了此数据并提交,事物A在第二次读取时就会得到和第一次读取时不一样的结果。

幻读: 幻读针对的是表中数据的整体,假设有一个事物A要把表中所有数据的某一个字段更新成0,当A刚提交完事物B有插入了一条数据,此时在事物A看来有一条数据没有被更新到,就像产生了幻觉一样。

所以幻读针对的是insert/delete这种操作,不可重复读针对的是update操作(在事物执行的间隙对某条数据进行修改)。

为了解决上边的这几种问题,数据库设计了不同的隔离级别。

读未提交: 最低的隔离级别,以上几种问题都存在

读已提交: 可以解决脏读的问题

可重复读: 可以解决脏读和不可重复读,这种情况下一个事物读取了某一行数据后,在其没提交前其他事物就不能再对这条数据进行修改。

串行化: 事物顺序执行,可以解决所有的问题

标签:读取,事物,提交,数据,数据库,隔离
From: https://www.cnblogs.com/chengxuxiaoyuan/p/17133682.html

相关文章

  • ABAP 数据库表 Size Category 字段的准确含义
    有朋友在我这篇教程文章里留言:14.如何创建最简单的ABAP数据库表,以及编码从数据库表中读取数据(上)这位朋友的问题是想咨询ABAP数据库表TechnicalSettings里这......
  • 导出数据库结构,用于编写数据库文档
    packagecompany;importfreemarker.template.Configuration;importfreemarker.template.Template;importjava.io.*;importjava.sql.*;importjava.util.ArrayL......
  • 2023年软考数据库系统工程师视频教程
    很多考生准备参加2023年软考数据库系统工程师考试,为帮助考生顺利通过考试,课课家软考学院为考生推荐数据库系统工程师学习视频、串讲视频、真题讲解视频等内容,帮助考生......
  • 数据库的<> 比较运算
    数据库的<>比较运算的等于!=wherename<>'张三' 会把NULL的值对应的记录排除掉,所以不包含null和NULL的记录;所以只有''和'李四'才符合条件,故只有2条记录!null值不参与比......
  • MySQL数据库
    MySQL数据库一、MySQL数据库的介绍1、发展史1996年,MySQL1.02008年1月16号Sun公司收购MySQL。2009年4月20,Oracle收购Sun公司。MySQL是一种开放源代码的关系型数据库......
  • 11. 关联数据库
    恐惧是本能,行动是信仰(在此感谢尚硅谷宋红康老师的教程)1.关联方式找到数据库选项:添加指定数据库:配置MySQL数据库的详细信息:表面上很多人认为配置Dat......
  • (数据库系统概论|王珊)第四章数据库安全性:习题
    ​​pdf下载:密码7281​​​​•专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解​​名词解释数据库安全性:保护数据库以......
  • (数据库系统概论|王珊)第四章数据库安全性:习题
    pdf获取:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解名词解释数据库安全性:保护数据库以防止不合法......
  • 人大金仓数据库索引的应用与日常运维
    索引的应用一、常见索引及适应场景BTREE索引是KES默认索引,采用B+树实现。适用场景范围查询和优化排序操作。不支持特别长的字段。HASH索引先对索引列计算一个散列值(类似md5......
  • 【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
    一定要弄懂项目部署的方方面面。当服务器上部署的项目过多时,端口号什么时候该放行、什么时候才会发生冲突?多个项目使用redis怎么防止覆盖?Nginx的配置会不会产生站点冲突?二级......