首页 > 数据库 >Mysql事务四大特性的介绍

Mysql事务四大特性的介绍

时间:2024-08-06 20:23:37浏览次数:18  
标签:事务 账户 数据库 特性 修改 提交 Mysql 数据

1 数据库事务

        数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操作的数据库系统。例如,航空公司的订票系统、银行、保险公司以及证券交易系统等

应用场景:银行的转账操作,A账号扣钱,B账号加钱,需要保证A和B的操作同时成功或者同时失败。

1.1 事务的四大特性

        事务具有 4 个特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这 4 个特性通常简称为 ACID。

        1. 原子性

        事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。以银行转账事务为例,如果该事务提交了,则这两个账户的数据将会更新。如果由于某种原因,事务在成功更新这两个账户之前终止了,则不会更新这两个账户的余额,并且会撤销对任何账户余额的修改,事务不能部分提交。

        2. 一致性

        当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据库中存储的数据处于一致状态。在正在进行的事务中. 数据可能处于不一致的状态,如数据可能有部分被修改。然而,当事务成功完成时,数据必须再次回到已知的一致状态。通过事务对数据所做的修改不能损坏数据,或者说事务不能使数据存储处于不稳定的状态。以银行转账事务事务为例。在事务开始之前,所有账户余额的总额处于一致状态。在事务进行的过程中,一个账户余额减少了,而另一个账户余额尚未修改。因此,所有账户余额的总额处于不一致状态。事务完成以后,账户余额的总额再次恢复到一致状态。

        3. 隔离性

        对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。另外,当事务修改数据时,如果任何其他进程正在同时使用相同的数据,则直到该事务成功提交之后,对数据的修改才能生效。张三和李四之间的转账与王五和赵二之间的转账,永远是相互独立的。

        4. 持久性

        事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。一个事务成功完成之后,它对数据库所作的改变是永久性的,即使系统出现故障也是如此。也就是说,一旦事务被提交,事务对数据所做的任何变动都会被永久地保留在数据库中。事务的 ACID 原则保证了一个事务或者成功提交,或者失败回滚,二者必居其一。因此,它对事务的修改具有可恢复性。即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。

1.2 事务提交的方式

        事务提交的两种方式

查看事务自动提交事务开启:show VARIABLES like 'autocommit'

设置事务自动提交命令:set session autocommit = on;

show VARIABLES like'autocommit'

-- 该设置只针对当前新建的查询窗口 session
set session autocommit =off;

UPDATE t_person setusername = "张三666"where id = 1
commit;

begin;
UPDATE t_person setusername = "张三666666"where id = 1
commit;
rollback;

        事务结束的三种方式:

commit 或者 rollback 或者 断开客户端的连接。

标签:事务,账户,数据库,特性,修改,提交,Mysql,数据
From: https://blog.csdn.net/m0_73864806/article/details/140936388

相关文章

  • MySQL中DayofWeek与Weekday的区别
    DAYOFWEEK(date):(1-7,周日始,美国人)这个函数返回日期date是一周中的哪一天,范围是1到7。其中,1表示周日,2表示周一,依此类推,7表示周六。这符合美国的日期习惯,即周日是一周的第一天。例如,DAYOFWEEK('2023-03-01')如果这一天是周三,将返回3。WEEKDAY(date):(0-6,周一始)WEEKDAY(......
  • 2024年8月6日(MySQL主从)
    一、glibc安装(回顾及补充)1、清空/etc/目录下的my.cnfls-l/etc/my.cnfrm-rf/etc/my.cnfyum-yremovemariadbfind/-name"*mysql*"-execrm-rf{}\;2、安装mysql软件包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.......
  • 2024.8.06(mysql主从)
    一、glibc安装(回顾)mysql清空/etc/目录下的my.cnfls-l/etc/my.cnfrm-rf/etc/my.cnfyum-yremovemariadbfind/-name"*mysql*"-execrm-rf{}\;1、安装mysql软件包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12......
  • 挂载Ceph文件系统以及Ceph存储三副本特性展示
    创建文件系统cephfsvolumecreatecephfs 挂载CephFS的常规先决条件为客户端主机生成最小的conf文件并将其放在标准位置:mkdir-p-m755/etc/cephssh{user}@{mon-host}"sudocephconfiggenerate-minimal-conf"|sudotee/etc/ceph/ceph.conf确保conf具......
  • MySQL数据库基础1
    sql通用语法SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写,关键字建议使用大写注释:单行注释:--注释内容或#注释内容(MySQL特有)多行注释:/*注释内容*SQL分类DDL库操作查询所有数据库sho......
  • MySQL——SQL语句
    文章目录什么是SQL?SQL通用语法SQL分类DDL:操作数据库、表3.1操作数据库:CRUD3.2操作表CRUDDML:增删改表中数据1.添加数据:2.删除数据:3.修改数据:DQL:查询表中的记录1.语法:2.基础查询3.条件查询4.排序查询其他函数5.聚合函数6.分组查询7.分页查询:DCL:管理用户,授权1.管理用......
  • Spring事务传播性质导致事务失效
    this导致事务失效的原因当我们在一个事务中调用另一个对象的方法时,如果这个方法中使用了this关键字,事务可能会失效。这是因为this关键字代表当前对象的引用,而事务是基于数据库连接的,每个数据库连接有自己的事务上下文。如果在一个事务中调用另一个对象的方法,而这个方法中使用了t......
  • MySQL主从复制
    介绍MySOL主从复制是一个异步的复制过程,底层是基于Mysq1数据库自带的二进制日志功能。就是一台或多台MySOL数据库(slave,即从库)从另一台MvSOL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySOL主从复制是MySOL数......
  • 【MySQL的索引优化】
    一、索引的使用场景1、全值匹配通过主键索引查询代码解读mysql>explainselect*fromt_goodswhereid=1\G;***************************1.row***************************id:1select_type:SIMPLEtable:t_goodspartitions:N......
  • 基于Java+SpringBoot+Mysql实现的在线电影订票系统部分功能设计与实现五
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展和普及,人们的娱乐消费方式发生了巨大变化。在线娱乐平台,特别是电影订票系统,成为了现代人观影的主要选择之一。这一变化主要得益于以下几个方面的因素:生活节奏的加快:现代人的生活节奏越来越快,时间变得尤为宝贵。在线电影......