mysql事务

事务的隔离级别,传播行为,锁机制

不想你离开。 提交于 2019-12-03 11:06:25
一,事务的特性(ACID): 原子性(Atomicity): 事务是一个完整的操作,事务的各步操作都是不可再分的,要么都执行, 要么都不执行。 一致性(Consistency): 当事务完成时,数据必须处于一致的状态。 隔离性(Isolation): 并发事务之间相互独立、隔离,它不应以任何方式依赖于或影响其他事务。 持久性(Durability): 事务完成后,它对数据库的修改被永久保持。 在Spring中,所有操作事务的类都继承自 PlatformTransactionManager 二,事务的隔离级别 ISOLATION_READ_UNCOMMITTED:读未提交 ISOLATION_READ_COMMITTED:读已提交 ISOLATION_REPEATABLE_READ:可重复读 ISOLATION_SERIALIZABLE:串行化 三,脏读,不可重复读,幻读(虚读) 脏读:A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作,这时候如果事务B回滚,那么A事务读到的数据是不被承认的。 不可重复读:不可重复读是指A事务读取了B事务已经提交的更改数据。假如A在取款事务的过程中,B往该账户转账100,A两次读取的余额发生不一致。 幻读:A事务读取B事务提交的新增数据,会引发幻读问题。幻读一般发生在计算统计数据的事务中 四,事务的传播行为 五,锁机制 悲观锁:

事务的传播行为,隔离级别以及锁机制

人走茶凉 提交于 2019-12-03 10:44:06
事务的隔离级别: read_uncommitted 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。 这种隔离级别会产生脏读,不可重复读和幻像读。 read_committed 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。 这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。 repeatable_read 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。 它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。 serializable 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。 除了防止脏读,不可重复读外,还避免了幻像读。 MySQL默认的方式的:可重复读。 七种传播行为:   在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层,那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。   如果你在你的Service层的这个方法中,除了调用了Dao层的方法之外,还调用了本类的其他的Service方法,那么在调用其他的Service方法的时候

mysql面试题

会有一股神秘感。 提交于 2019-12-03 10:38:32
1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同; (2)、innodb引擎的4大特性 (3)、2者selectcount(*)哪个更快,为什么 3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义 (1)、varchar与char的区别 (2)、varchar(50)中50的涵义 (3)、int(20)中20的涵义 (4)、mysql为什么这么设计 4、innodb的事务与日志的实现方式 (1)、有多少种日志; (2)、事物的4种隔离级别 (3)、事务是如何通过日志来实现的,说得越深入越好。 5、问了MySQL binlog的几种日志录入格式以及区别 (1)、binlog的日志格式的种类和分别 (2)、适用场景; (3)、结合第一个问题,每一种日志格式在复制中的优劣。 6、问了下MySQL数据库cpu飙升到500%的话他怎么处理? (1)、没有经验的,可以不问; (2)、有经验的,问他们的处理思路。 7、sql优化 (1)、explain出来的各种item的意义; (2)、profile的意义以及使用场景; 8、备份计划,mysqldump以及xtranbackup的实现原理 (1)、备份计划; (2)、备份恢复时间; (3)

数据库隔离级别,读已提交,读未提交

╄→гoц情女王★ 提交于 2019-12-03 10:38:06
同样是后端开发,年薪50万和年薪20万的差距在哪里>>> 数据库 事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决 脏读、不可重复读、幻读 这几类问题。 √: 可能出现 ×: 不会出现 事务的隔离级别 脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed--Sql Server , Oracle × √ √ Repeatable read-- MySQL × × √ Serializable × × × 注意:我们讨论隔离级别的场景,主要是在多个事务并发的情况下,因此,接下来的讲解都围绕 事务并发 。 Read uncommitted 读未提交 公司发工资了,领导把5000元打到singo的账号上,但是该事务并未提交,而singo正好去查看账户,发现工资已经到账,是5000元整,非常高兴。可是不幸的是,领导发现发给singo的工资金额不对,是2000元,于是迅速回滚了事务,修改金额后,将事务提交,最后singo实际的工资只有2000元,singo空欢喜一场。 出现上述情况,即我们所说的脏读,两个并发的事务,“事务A:领导给singo发工资”、“事务B:singo查询工资账户”

mysql - 事务

↘锁芯ラ 提交于 2019-12-03 10:29:06
mysql的主要特色就是存储引擎。。。 用 SHOW ENGINES 显示支持的存储引擎 默认的是innoDB MyISAM是很久以前的默认存储引擎 memory也比较常用 这三个中只有innoDB支持事务。 事务: 原子性,一致性,隔离性,持久性 1.隐性事务: 一般情况下,每次运行一个sql语句可以看做是一次事务 查看是否自动提交 SHOW VARIABLES LIKE 'autocommit' 一般默认都是on 没有开始和结束的标记。 2.显性事务 有明显的开始和结束 SET autocommit = 0; #关闭自动提交 START TRANSACTION; #开启事务#语句 COMMIT; #提交事务,语句生效 ROLLBACK; #回滚,语句不生效 来源: https://www.cnblogs.com/clamp7724/p/11791226.html

11.01 事务,视图,触发器,存储过程,函数,数据库备份

走远了吗. 提交于 2019-12-03 10:08:37
事务 事务指的是一组操作,要么执行成功,要么都执行失败 ''' 例: 银行汇款,当我給朋友汇款的时候,我的银行存款已经扣除,他的银行存款未增加的时候断电了,怎么办? 可以使用事务解决这个问题 ''' 事务使用 start transaction; sql语句 commit/rollback; commit:是提交,让事务的语句执行成功, rollback:是回滚,在语句内的所有任务回到起始位置. 特性******* 原子性(Atomicity): 原子意为最小的粒子,即不能在分的事务,要么全部执行,要么全部取消 一致性(Consistency): 指事务发生前和发生后,数据的总额依然匹配 隔离性(Isolation): 就是,某个事务的操作对其它事务是不可见的 持久性(Durability): 当事务完成后,其影响应该2保留下来,不能撤销,只能通过"补偿性事务"来抵消之前的错误 存储引擎******* InnoDB: 相当于→保时捷引擎 MyIsam: 相当于→奔奔引擎 建表的时候: create table user( id int, name varchar(32) )engine=Innodb charset utf8; mysql5.5以上,默认Innodb引擎 mysql5.5以下,默认Myisam引擎 引擎区别******* innodb支持事务,myisam不支持事务

八、Spring之深入理解声明式事务

时光总嘲笑我的痴心妄想 提交于 2019-12-03 10:08:27
Spring之深入理解声明式事务 何为事务? 事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。 事务的四个属性 : 1、原子性(atomicity) 事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用 2、一致性(consistency) 一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中 3、隔离性(isolation) 可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏 4、持久性(durability) 事务一旦完成,无论系统发生什么错误,结果都不会受到影响。通常情况下,事务的结果被写到持久化存储器中 Spring中的事务管理 Spring在不同的事务管理API之上定义了一个抽象层,使得开发人员不必了解底层的事务管理API就可以使用Spring的事务管理机制。Spring支持编程式事务管理和声明式的事务管理。 编程式事务管理 将事务管理代码嵌到业务方法中来控制事务的提交和回滚 缺点:必须在每个事务操作业务逻辑中包含额外的事务管理代码 声明式事务管理 将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。将事务管理作为横切关注点,通过AOP方法模块化。Spring中通过Spring AOP框架支持声明式事务管理。 传播行为

对于MySQL数据库四种隔离等级

梦想与她 提交于 2019-12-03 09:51:14
对于MySQL事务有四种隔离级别,分别是以下四种: 1.读未提交 2.读提交 3.可重复读 4.串行化(加锁) 对于隔离我们都是说在并发的情况下发生的事情,读取的数据在并发的情况下会发生什么情况。 并且我们知道所有的事务都是原子性操作。但是在这些事务中隔离等级不一样,并发的速度和安全情况都是不一样的。等级越高,速度越慢但越安全。 1.读未提交:表示根本什么措施都没有,A读取了两次数据,但是B中间修改了一下数据,那么对于A来说,就会出现两次读取的数据不一致的情况。 2.读提交:还是A读取了两次数据,但是B中间修改了数据,这次跟上次的区别是,如果B修改数据的操作没有提交的话,A最后一次读取的数据跟第一次读取的数据是一样的值。但是如果在B提交了之后的话,A读取到的数据就是不一样了,这就是这个提交的意义,B提交和不提交的情况下,A读取的数据是不同的情况。 3.可重复读:代表无论B怎么改,只要A开始了这次事务,不论B在它的事务中修改数据没有,对A来说都是没有影响的。 换个角度是,只要A开始自己的事务,只要这个事务还没有提交,那么在这次事务中读取的数据肯定是一样的,这就是这个可重复读的重复的意思。 4:串行化:这个就是直接加锁了,对于A事务操作了数据,那么B就动不了,没有权限了。加锁嘛,就是这样。 来源: https://www.cnblogs.com/cold-windy/p

MySQL 的 4 种隔离级别,你了解么?

别说谁变了你拦得住时间么 提交于 2019-12-03 09:41:36
1、 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 2、 事务的 ACID 事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。 原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 隔离性。一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性。也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的

数据库系统(五)---MySQL基础

怎甘沉沦 提交于 2019-12-03 09:37:31
一、SQL基本概念:   SQL 已经成为关系数据库的标准语言,是一种数据库查询和程序设计语言,用 于存取数据以及查询、更新和管理关系数据库系统。 功能不仅仅是查询,还包括数据定义、数据操纵和数据控制等于数据库有关的 一系列功能。   四大功能:数据查询、数据定义、数据操纵和数据控制。   1)嵌入式和动态 SQL 规则 规定了 SQL 语句在高级程序设计语言中使用的规范方法,以便适应较为复杂的 应用。   2)SQL 调用和会话规则 调用包括 SQL 例程和调用规则,以便提高 SQL 的灵活性、有效性、共享性以 及使 SQL 具有更多的高级语言的特征。   3)关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有 数据库模式、表、索引、视图等。 SQL 标准提供的数据定义语句如下表:      二、MySQL 1、MySQL基础概念   MySQL 是一个关系数据库管理系统(RDBMS),它具有客户/服务器体系结构。 MySQL 中的 SQL 作为一种关系型数据库管理系统,遵循 SQL 标准,提供了对数据定义语言 DDL、数据操纵语言 DML、数据控制语言 DCL 的支持,同样支持关系数据库的三级模式结构。 MySQL 中一个关系对应一个基本表,一个或多个基本表对应一个存储文件,一 个表可以有若干索引,索引也存放在存储文件中。   MySQL 在 SQL