数据库事务

Oracle事务

孤街浪徒 提交于 2020-03-15 11:52:17
目录 一、事务的基本概念 二、事务的特征 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、设置事物属性 2、数据异常 3、选择隔离层 4、保存点 四、版权声明 一、事务的基本概念 在数据库中事务是工作的逻辑任务,一个事务是由一个或一组SQL语句组成,通过事务机制确保这一组SQL语句的操作要么全部成功执行成功,完成整个工作任务,如果任何一条SQL执行失败,对数据表所做的操作全部撤销。 事务的目的就是为了保证数据的完整性,以银行转换业务为例: A用户向B转账1000元,步骤如下: 1)A用户账户余额减少1000元; 2)B用户账户余额增加1000元; 3)记录A用户的交易日志。 4)记录B用户的交易日志。 一笔转帐交易将产生四次数据库操作,要么全部都成功,如果有一个失败,其它操作也应该全部被撤销。 转账交易有四次数据库操作,即四条SQL语句,第一条SQL执行的时候是事务的开始,如果全部的SQL语句执行成功,提交事务,如果有任何一条SQL语句执行失败,回滚事务。 commit; -- 提交事务。 rollback; -- 回滚事务。 二、事务的特征 对一组SQL语句操作构成的事务,数据库系统必须保证这些操作的原子性、一致性、隔离性和持久性,即ACID原则。 1、原子性

JavaEE 之 Spring Data JPA

牧云@^-^@ 提交于 2020-03-15 09:30:41
1.事务   a.事务的关键属性(ACID)     ①原子性(atomicity):事务的原子性确保动作要么全部完成,要么完全不起作用     ②一致性(consistency):一旦所有事务动作完成,事务就被提交。也就是说要么都成功,要么都不成功     ③隔离性(isolation):多个事物同时处理一个数据的时候,每个事物都应该与其他事务隔离开来,防止数据损坏     ④持久性(durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响。应该被持久化到数据库中   b.事务的传播行为     ①REQUERED——PROPAGATION_REQUIRED       支持当前事务,如果没有事物则新建事物----最常用     ②SUPPORTS       支持当前事务,如果没有事物,则以非事物的模式进行     ③MANDATORY       支持当前事务,如果当前没有事物,则抛出异常     ④REQUIRES-NEW       新建一个事物,如果当前存在事物,则将当前事务挂起     ⑤NOT-SUPPORTED       以非事物的方式进行,如果当前有事物则将事物挂起     ⑥NEVER       以非事物的方式进行,如果有事物则挂起     ⑦NESTED       如果当前存在事物,则嵌套在事物内进行,如果当前没有事物

Spring事务传播及数据库事务操作

不羁岁月 提交于 2020-03-15 09:27:33
从Spring 事务配置说起   先看看Spring 事务的基础配置 <aop:aspectj-autoproxy proxy-target-class="true"/>   <bean id="transactionManager"     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     <property name="dataSource" ref="dataSource"/>   </bean>   <tx:annotation-driven transaction-manager="transactionManager"/>   <!-- 配置事务传播特性-->   <tx:advice id="transactionAdvice" transaction-manager="transactionManager">     <tx:attributes>       <tx:method name="add*" propagation="REQUIRED"       rollback-for="Exception,RuntimeException,SQLException"/>       <tx:method name="remove*" propagation=

Spring中的事务管理

北慕城南 提交于 2020-03-15 09:20:16
一、事务简介 事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四个关键属性(ACID) 原子性(atomicity): 事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用. 一致性(consistency): 一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中. 隔离性(isolation): 可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏. 持久性(durability): 一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中 Spring 中的事务管理 作为企业级应用程序框架,Spring 在不同的事务管理 API 之上定义了一个抽象层. 而应用程序开发人员不必了解底层的事务管理 API, 就可以使用 Spring 的事务管理机制. Spring 既支持编程式事务管理, 也支持声明式的事务管理. 编程式事务管理: 将事务管理代码嵌入到业务方法中来控制事务的提交和回滚. 在编程式管理事务时, 必须在每个事务操作中包含额外的事务管理代码. 声明式事务管理:

子查询/联合分组/all与any/视图/事务

纵然是瞬间 提交于 2020-03-14 03:41:14
子查询 将一条查询sql的结果作为另一条sql的条件 使用方法总结: # 增:insert into 表 select子查询 # 删:delete from 表 条件是select子查询(表不能与delete表相同) # 查:select 字段 from 表 条件是select子查询 # 改:update 表 set 字段=值 条件是select子查询(表不能与update表相同) 联合分组: 按多个字段综合结果进行分组 使用方法总结: # 按 area与port组合后的结果进行分组,只有组合后的结果还一致,才认为是一组 select group_concat(name),area,port from emp group by area,port; 区间修饰条件(all与any): 使用方法总结: # 语法规则 # where id in (1, 2, 3) => id是1或2或3 # where id not in (1, 2, 3) => id不是1,2,3 # where salary < all(3, 6, 9) => salary必须小于所有情况(小于最小) # where salary > all(3, 6, 9) => salary必须大于所有情况(大于最大) # where salary < any(3, 6, 9) => salary只要小于一种情况(小于最大)

索引、视图、事务

谁都会走 提交于 2020-03-13 21:56:45
索引     是一个数据结构,用来查询数据库表的数据     主键索引:       primary key       作用:确认表中一条特定数据记录的位置,不能为空,一个表只有一个主键     外键索引:表中的一个字段(非主键)指向另一张表中的主键,称该字段为主键。       foreign key(外键名) references 主表(主键) ;       作用:多表查询时方便联系两表数据。限制:表类型必须是innodb(有约束效果)     唯一索引:确定某一列不能出现重复的值       unique     普通索引:       create index 索引名 on 表名(列名)     索引操作:       创建:create index 索引名 on 表名(列名)       查看:show index from 表名       删除:drop index 索引名 on 表名    视图     是一个虚拟的表,不占用物理内存、不存放数据,数据只存在基表中,相互影响     优点:简单、方便,查看数据更清楚;安全性:保护数据;不占物理内存     缺点:性能差;查询效率偏低,需要转换;修改限制:对于复杂视图(多表查询)修改是麻烦的     创建:create view 视图名 as select语句     查询:show creaw view 视图名

【读书笔记】数据库

你离开我真会死。 提交于 2020-03-13 21:00:27
这里是整理了数据库的一些常见问题,以及基本命令 1、数据库中的事务 数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行。 2、数据库事务的四大特性(ACID) 原子性(Atomicity):一件事务要么提交成功,要么全部失败回滚 一致性(Consistency):事务执行前后都保持一致性原则 隔离性(Isolation):事务提交之前它对其他所有事务不可见。通过乐观锁和悲观锁实现 持久性(Durability):一旦事务提交,所做修改永久保存到数据库中 3、数据库的锁 乐观锁:假设不会发生冲突,直到事务提交时才检查是否违反了完整性(通过数据 版本或者时间戳实现;添加version字段,每做一次操作就让version+1,提交时进行对比) 悲观锁:假设一定会发生冲突,屏蔽一切可能违反完整性的操作(synchronized就是悲观锁) 共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁。获准共享锁的事务只能读数据,不能修改数据。 排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。 4、数据库优化 (1)sql语句的优化 子查询变成left join or条件优化,多个or条件可以用union all对结果进行合并

Spring事务传播属性和隔离级别

青春壹個敷衍的年華 提交于 2020-03-13 13:05:49
一、Spring事务传播属性(Propagation): 1) REQUIRED(默认属性) 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。 2) MANDATORY 支持当前事务,如果当前没有事务,就抛出异常。 3) NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。 4) NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 5) REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。 6) SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。 7) NESTED 支持当前事务,新增Savepoint点,与当前事务同步提交或回滚。 嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。 PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别: 它们非常类似,都像一个嵌套事务,如果不存在一个活动的事务,都会开启一个新的事务。 使用PROPAGATION_REQUIRES_NEW时

SQL Server,MySQL,Oracle三者的区别

僤鯓⒐⒋嵵緔 提交于 2020-03-13 07:28:39
SQL Server,MySQL,Oracle三者的区别 Oracle Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持,Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展Windows NT的能力,提供高可用性和高伸缩性的簇的解决方案。如果Windows NT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。Oracle获得最高认证级别的ISO标准认证.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录Oracle多层次网络计 算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。 Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。 Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上 不同的大、中、小型机上;可在VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。能与多种通讯网络相连,支持各种协议(TCP/IP、 DECnet、LU6.2等)。提供了多种开发工具

Spark Streaming的事务处理

为君一笑 提交于 2020-03-12 19:21:29
本期内容 exactly once 输入不重复 输出不重复 exactly once :有且仅被执行一次。(不多,不少,一次刚好) 首先和大家聊下概念: 事务是恢复和 并发控制 的基本单位。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID特性 。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。 简单记忆法则(一持原隔) 如:银行转账,A向B转账500元,这个步骤可以分为A扣500元,B加500元 两部分。 如果 A减500元成功后,在B加500元的时候失败了,那么A减掉的500就不生效。也就是说。要么两个操作都成功,要么两个操作都失败。 先了解下SparkStreaming的数据流转流程 数据一致性的要求: 数据源可靠。数据源产生出来后