当前位置: 首页 > news >正文

数据库事务编程

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

事务的 4 大特性 ACID

  1. 原子性 Atomicity:事务被视为一个不可分割的原子操作,要么全部执行成功,要么全部失败回滚,不会存在 部分执行成功部分失败的情况。
  2. 一致性 Consistency:事务执行前后,数据库状态应保持一致。即事务执行完毕后,所有数据应符合预设的规则和约束条件。
  3. 隔离性 Isolation:多个事务并发执行时,每个事务对其他事务的操作应该互不干扰,各自独立运作,避免数据交叉影响。
  4. 持久性 Durability:一旦事务提交成功,其所做的修改就应该永久保存在数据库中,即使系统崩溃或断电,也不应该丢失数据。

SQL 编程事务

start transaction;开启事务
commit;提交
rollback;回滚
savepoint 存储点,可以支持部分回滚

        数据库中的数据是用来实现数据共享的,高并发场景下则会出现数据安全问题,例如脏读、幻读、不可重复读和第一二类丢失更新。为了保证数据在高并发下的安全性,引入了事务。事务的隔离等级决定了数据的安全等级。

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

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

http://www.lryc.cn/news/326884.html

相关文章:

  • 专题二_滑动窗口(1)
  • 把本地文件上传到HDFS上操作步骤
  • Leo赠书活动-21期 《一篇讲明白 Hadoop 生态的三大部件》
  • 【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?
  • ArrayList和LinkedList有什么区别?
  • 离线数仓(八)【DWD 层开发】
  • Jenkins用户角色权限管理
  • 简明conan教程
  • LeetCode刷题--- 等差数列划分 II - 子序列
  • kubectl 启用shell自动补全功能
  • 极简wordpress网站模板
  • 【python】(16)python的字典dict按照key或value排序的不同方法
  • 微服务篇-C 深入理解第一代微服务(SpringCloud)_VI 深入理解Zuul服务网关
  • web CSS笔记1
  • js算法记录
  • 球面数据的几何深度学习--球形 CNN
  • MySQL学习笔记------SQL(1)
  • PMP能提前查成绩?还能改分数?别太离谱!
  • 【保姆级讲解服务器硬件的基础知识】
  • 并查集---力扣547省份的数量
  • stm32启动文件里面的__main和主函数main()
  • 曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)
  • 深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析
  • Python学习之-正则表达式
  • Godot.NET C# 工程化开发(1):通用Nuget 导入+ 模板文件导出,包含随机数生成,日志管理,数据库连接等功能
  • 数据仓库——雪花模式以及层次递归
  • Transformer的前世今生 day09(Transformer的框架概述)
  • Qt 压缩/解压文件
  • 【leetcode刷题之路】面试经典150题(8)——位运算+数学+一维动态规划+多维动态规划
  • JetBrains全家桶激活,分享 WebStorm 2024 激活的方案