十:MYSQL中的事务

前言:

  因为没有多少时间和精力,目前无法深入研究数据库中的事务,比如

  但是,对于事务的一些基本知识,还是需要牢牢掌握的,做到了解事务的基本常识,在实际开发中能够理解各个持久层框架对事务的处理

一:是么是事务?

  下面是百度百科的结果

   

    在开发中对于一个业务逻辑需要对数据进行的一系列CRUD操作,这一系列操作,我们可以把它称为一个事务

    这样理解事务就必须了解事务四大特性:原子性 、一致性、隔离性、持久性

二:事务的四大特性--ACID

  2.1:原子性

    在一个事务中对数据的所有操作,属于一个单元,不可分割,只有成功或者失败,不可能某个操作成功某个操作失败

  2.2:一致性

    事务前后,数据的一致性,在既定规则下的事务处理过程中,必须严格按照既定规则操作数据,不可破坏规则

    维护数据的一致性任务应该由程序员来完成

    比如数据修改前为 10.00 修改完后变成了 5.5 满足一致性应该为5.50(这是我自己的理解)

  2.3:隔离性

    体现在并发事务情况下,多个事务互相隔离,互不影响

  2.4:持久性

    在正确提交事务后,对数据的修改将是永久性的

三:事务的隔离级别

  体现在并发事务中的读的操作

  事务有四个隔离级别:READ-UNCOMMITTED 、  READ COMMITTED、 REPEATABLE READ 、 SERIALIZABLE

  3.1:脏读

    在事务A中读取到事务B修改了但是未提交的数据

  3.2:不可重复读

    解决了脏读,但是在事务A中可以读取到事务B提交后的数据(导致在事务A中多次执行相同的读的操作的结果不同)

  3.3:可重复读

    解决了不可重复读,但是事务B在提交事务前后分别执行读相同操作读取数据,发现前后结果不一样,好像之前读到的数据是一个幻象

  3.4:串行化

四:事务的分类

  4.1:扁平事务(FLAT TRANSACTION)

  4.2:带有保存点的扁平事务(FLAT TRANSACTION WITH SAVPOINTS)

  4.3:链式事务(Chained TRANSACTION)

  4.4:嵌套事务(Nested Transaction) InnoDB不支持

  4.5:分布式事务(Distributed Transaction)

五:MYSQL中的事务

  innoDB是MYSQL数据库的默认存储引擎,支持事务操作

  本来想自己亲手测试一下,不同事务隔离级别对数据读取的影响,想想还是算了吧,了解了就可以了

  MYSQL默认事务隔离级别是REPEATABLE READ---可重复读

  

原文地址:https://www.cnblogs.com/wdmlsx/p/9275904.html

时间: 2024-08-29 09:22:18

十:MYSQL中的事务的相关文章

漫谈MySql中的事务

最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账

【MySQL】漫谈MySQL中的事务及其实现

最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySQL,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账

MySql中操作事务

假如我们有一个表,为account,其内容为: ID NAME BALANCE 1 zhangsan 1000 2 lisi 1000 什么是事务 比如支付宝转账!张三转1000块到李四的账户,这其实需要两条SQL语句: 给张三的账户减去1000元: 给李四的账户加上1000元. 如果在第一条SQL语句执行成功后,在执行第二条SQL语句之前,程序被中断了(可能地下光纤被挖掘机挖断了--确实存在的哦),那么李四的账户没有加上1000元,而张三却减去了1000元.这肯定是不行的! 你现在可能已经知道

聊一聊 MySQL 中的事务及其实现原理

原文:聊一聊 MySQL 中的事务及其实现原理 说到数据库,那就一定会聊到事务,事务也是面试中常问的问题,我们先来一个面试场景: 面试官:"事务的四大特性是什么?" 我:"ACID,即原子性(Atomicity).隔离性(Isolation).持久性(Durability).一致性(Consistency)!" 面试官:"在 MySQL 数据库的 InnoDB 引擎是怎么实现这四大特性的?" 我:"这个...这个....,还真没有了解过

mysql中的事务

一.事务的作用 事务是指一系列将要发生的连续的操作. 事务安全是为了保证一系列操作的结果保持同步,保证数据的完整性. 开启事务后,操作的结果会先保存到事务日志中,等操作完成提交事务后,才会修改表中的数据. 注意:只有innodb存储引擎和bdb存储引擎才支持事务安全. 二.事务使用 start transaction; -- 开启事务 -- SQL语句1... savepoint sp1; -- 设置回滚点 -- SQL语句2... -- 如果操作失败 可以用rollback退回到回滚点 rol

浅谈mysql中不同事务隔离级别下数据的显示效果

事务的概念 事 务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查 询语句因为崩溃或其他原因而无法执行,那么所有的语句就都不会执行.也就是说,事务内的语句要么全部执行,要么一句也不执行. 事务的特性:acid,也称为事务的四个测试(原子性,一致性,隔离性,持久性) automicity:原子性,事务所引起的数据库操作,要么都完成,要么都不执行consisitency:一致性,事务执行前的总和和事务执行后

mysql中不同事务隔离级别下数据的显示效果--转载

事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都不会执行.也就是说,事务内的语句要么全部执行,要么一句也不执行. 事务的特性:acid,也称为事务的四个测试(原子性,一致性,隔离性,持久性) automicity:原子性,事务所引起的数据库操作,要么都完成,要么都不执行 consisitency:一致性,事务执行前的总和和事务执行后的总和是不变的

关于MYSQL中的事务

mysql中只有innodb支持事务. 事务有4个特点 1.原子性(Atomicity) 事务中包含的程序作为数据库的逻辑工作单位,它对数据库中的数据进行操作时,要么全部执行,要么都不执行. 举个例子,你给小A转账500块时.这个时候银行的数据库会将你卡里的金额减500,同时小A卡里的金额增加500.不存在你的钱被扣,小A的钱没加.或者你的钱没扣,小A的钱增加了. 2.一致性(Consistancy) 一个事务执行前和执行后,数据库都必须要处于一致性的状态. 这句话是怎么理解:就是你给小A的卡里

MySQL中的事务及读写锁实现并发访问控制

一.并发控制中锁的概念 锁是并发控制中最核心的概念之一,在MySQL中的锁分两大类,一种是读锁,一种是写锁,读锁也可以称为共享锁(shared lock),写锁也通常称为排它锁(exclusive lock). 这里先不讨论锁的具体实现,描述一下锁的概念:读锁是共享的,或者说是相互不阻塞的.多个客户在同一时刻可以同时读取一个资源,且互不干扰.写锁则是排他的,就是说一个写锁会阻塞其他的写锁和读锁,这是出于安全策略的考虑,只有这样,才能确保在给定时间里,只有一个用户能执行写入,并防止其他用户读取正在