首页 > 数据库 >数据库事务的四大特性(ACID)

数据库事务的四大特性(ACID)

时间:2023-10-09 21:22:54浏览次数:33  
标签:事务 数据库 系统 例子 一致性 ACID

ACID

ACID 是数据库事务的四个关键特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  1. 原子性(Atomicity)

    • 解释: 事务是一个原子操作单元,要么全部执行成功,要么全部失败回滚,不存在部分执行的情况。

    • 例子: 考虑银行转账操作,从一个账户扣除一定金额并将相同金额添加到另一个账户。如果扣款成功但添加失败,整个事务应该回滚,确保数据的一致性。

  2. 一致性(Consistency)

    • 解释: 事务使数据库从一个一致性状态转移到另一个一致性状态,保证数据的完整性。

    • 例子: 在图书馆管理系统中,借书和还书操作是一个事务。如果某人借了一本书,系统必须确保在还书前其他人无法借到相同的书,以保持图书馆的一致性状态。

  3. 隔离性(Isolation)

    • 解释: 多个事务并发执行时,每个事务都应该感觉就像是系统中唯一运行的事务,相互之间不会产生影响。

    • 例子: 考虑一个在线购物网站,两个用户同时购买同一商品。系统必须确保两个事务(购买操作)之间相互隔离,以防止一个用户的购买操作影响另一个用户。

  4. 持久性(Durability)

    • 解释: 一旦事务提交,对数据库的修改应该是永久性的,即使系统崩溃也不应该丢失。

    • 例子: 当你在社交媒体上发布一条消息时,一旦你点击“发布”并且系统确认提交,该消息应该被持久保存,即使系统在此之后崩溃也不会丢失。

标签:事务,数据库,系统,例子,一致性,ACID
From: https://www.cnblogs.com/ysk0904/p/17753184.html

相关文章

  • 锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时
    3.1、A程序执行了对tableA的insert,并还未commite时,B程序也对tableA进行insert则此时会发生资源正忙的异常就是锁表;3.2、锁表常发生于并发而不是并行(并行时,一个线程操作数据库时,另一个线程是不能操作数据库的,cpu和i/o分配原则)4、减少锁表的概率:减少insert、update、......
  • uniCloud-用db schema在客户端访问数据库
    先下载所有dbschema在前端代码中直接访问数据库表拿数据index.vue<template> <viewclass="content"> <viewv-for="itemindataList":key="item._id"> {{item.name}}---{{item.gender}}---{{item.age}} </view> <......
  • MySQL数据库被锁表你有遇到过吗?
    1.被锁原因1、锁表发生在insertupdate、delete中;2、锁表的原理是数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite或者回滚或者退出数据库用户;3、锁表的原因:3.1、A程序执行了对tableA的insert,并还未commite时,B程序也对tableA进行insert......
  • JXNU数据库_数据库基本SQL操作
    我永远的乌托邦frompixiv_水星领航员基本表的定义,删除和修改1.定义基本表(CREATETABLE):要在数据库中定义一个新的基本表,你可以使用CREATETABLE语句。以下是一个创建名为"Employees"的基本表的示例:CREATETABLEEmployees(EmployeeIDINTPRIMARYKEY,Fi......
  • 网安周报|Mixin Network 云服务商数据库遭到攻击,涉案金额约 2 亿美元
    1、MixinNetwork云服务商数据库遭到攻击,涉案金额约2亿美元MixinNetwork是一个开源的数字资产点对点交易网络,今天在Twitter上宣布,由于该平台遭受了黑客攻击,存款和取款立即暂停。据报道,该攻击的目标是Mixin云服务提供商的数据库,涉案金额约2亿美元。由于在黑客攻击中损失了大量资......
  • openGauss学习笔记-94 openGauss 数据库管理-访问外部数据库-mysql_fdw
    openGauss学习笔记-94openGauss数据库管理-访问外部数据库-mysql_fdwopenGauss的fdw实现的功能是各个openGauss数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程服务器类型包括Oracle、MySQL(MariaDB)、openGauss(postgres_fdw)、file_fdw、dblink。mysql_f......
  • 数据库MYSQL常用
    1命令操作数据库相关1.1连接和退出mysql服务#账号密码方式(我的本地因为暂时没有密码,所以不需要输入密码)mysql-hlocalhost-P3306-uroot-proot#退出\q1.2数据库操作1.2.1创建数据库createdatabasemydemo;1.2.2显示全部的数据库showdatabases;1.2......
  • Django 数据库--values_list 指定字段取值及 distinct 去重处理
    通过QuerySet会返回model的所有字段,通过obj.field_name即可获取对应字段的数据values():获取某一个或者某几个字段的数据指定字段使用values()指定参数可以仅仅返回相应字段的字典列表,如:name_dict_list=Project.objects.values('name')则name_dict_list= <Q......
  • MySQL数据库报 1040 too many connection
    找个是因为超过了最大的连接数你把最大的连接数改一下就可以了  改完之后记得重启mysqlwindows+R cmd进入黑窗口 ......
  • SQL SERVER查询数据库表的数量
    SELECTcount(*)FROMsys.objectsWHEREtype='U'  --统计表数量SELECTNAME FROMsys.objectsWHEREtype='U'     --列出表名称或者SELECTCOUNT(*)FROMSysObjectsWhereXType='U'  --统计表数量SELECTNameFROMSysObjectsWhereXType='U'......