数据库事务

JDBC事务与连接池

扶醉桌前 提交于 2019-12-21 05:10:49
(一)JDBC事务: 抽象的概念:实际开发中一个完整的业务逻辑,(每一个小单元分别对数据库的数据进行crud操作), 我们通过所有的小单元,要么同时顺利完成,要么同时失败 JDBC事务的四大原则: 1,原子性:每一个事务都是最小的原子单位,不能进行再分割 2,一致性:同时进行,还么都完成要么都失败,要么执行前的数据,要么执行后的数据; 3,隔离性:每个事务都是相互隔离,互不影响; 4,持久性:一旦执行commit就无法修改。; JDBC事务的操作与步骤: 1,使用set AutoCommit =0 方法使数据库的修改从自动改为手动提交 2,start transaction开启事务; 3,sava point设置回滚点:随便取名一个回滚点,执行这条语句过后当前语句就是回滚点 4,如果不想执行成功,想回到回滚点,那么就用rollback to回到回滚点具体位置。如果没有设置回滚点,使用rollback回滚到上一层操作; 5,commit提交事务,事务一旦提交就无法更改; (二)数据库连接池 JDBC:使用java代码来操作数据库,其实就是提供了一些方法(接口),接口的实现是数据库的厂商实现; 1,连接池:没有连接池时候: 每次都要创建jdbc连接资源,关闭资源 ==>反复创建与销毁会影响性能 2,有连接池以及作用:管理连接,避免反复销毁连接,连接池是由连接池的厂商来创建

客户端持久化解决方案:indexedDB

[亡魂溺海] 提交于 2019-12-21 05:05:01
客户端持久化解决方案:indexedDB indexedDB适合大量的结构化的数据存储;打开数据库和获取数据对象都是异步的; 需要开启事务,访问的objectStore都要是在开启的事务中。 数据库结构: db->transaction->objectStore->data Web SQL Database 实际上已经被废弃,而HTML5支持的本地存储实际上变成了 Web Storage ( Local Storage和Session Storage )与 IndexedDB 。 Web Storage 使用简单字符串键值对在本地存储数据,方便灵活,但是对于大量结构化数据存储力不从心, IndexedDB 是为了能够在客户端存储大量的结构化数据,并且使用索引高效检索的API。 indexedDB最显著的特点: 异步API 在IndexedDB大部分操作( 如:打开数据库和获取数据 )并不是同步的,如: var request=window.indexedDB.open('testDB'); 这条指令并不会返回一个DB对象的句柄,我们得到的是一个IDBOpenDBRequest对象,而我们希望得到的DB对象在 IDBOpenDBRequest.result 属性中. indexedDB的常用操作 创建/打开数据库 function openDB (name) { var

前端存储之indexedDB

落花浮王杯 提交于 2019-12-21 05:04:06
在前一个阶段的工作中,项目组要开发一个平台,为了做出更好的用户体验,实现快速、高质量的交互,从而更快得到用户的反馈,要求在前端把数据存储起来,之后我去研究了下现在比较流行的前端存储数据库,找到了indexedDB,于是便对indexedDB做了一个较为深入的探索,此文就是记录探索过程的一些心得体会。 indexedDB为何物 在使用一个技术之前,先搞清楚它是什么,这对你的理解很重要,从DB就可以看出,它肯定是一个数据库,而说到数据库,有两种不同类型的数据库,就是关系型数据库和非关系型数据库,关系型数据库如Mysql、Oracle等将数据存储在表中,而非关系型数据库如Redis、MongoDB等将数据集作为个体对象存储。indexedDB就是一个非关系型数据库,它不需要你去写一些特定的sql语句来对数据库进行操作,因为它是nosql的,数据形式使用的是json, indexedDB出现的意义 也许熟悉前端存储的会说,不是有了LocalStorage和Cookies吗?为什么还要推出indexedDB呢?其实对于在浏览器里存储数据,你可以使用cookies或local storage,但它们都是比较简单的技术,而IndexedDB提供了类似数据库风格的数据存储和使用方式。 首先说说Cookies,英文直接翻译过来就是小甜点,听起来很好吃,实际上并不是

浏览器数据库 IndexedDB 教程

为君一笑 提交于 2019-12-21 05:00:29
浏览器数据库 IndexedDB 教程 阅读 171 收藏 23 2018-08-12 原文链接: mp.weixin.qq.com 腾讯云优惠套餐免费赠送50GB对象存储空间,加8元可选1年域名服务,助力学生党秒变云计算达人。 cloud.tencent.com 概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引。所以,需要一种新的解决方案,这就是 IndexedDB 诞生的背景。 通俗地说,IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。 IndexedDB 具有以下特点。 (1)键值对储存。 IndexedDB 内部采用对象仓库(object store)存放数据。所有类型的数据都可以直接存入,包括

Redis常见面试题解析(一)

你离开我真会死。 提交于 2019-12-21 04:08:03
文章目录 一、 Redis 概念理解 1. 什么是 Redis? 2. Redis 的特点有哪些? 3. Memcache 与 Redis 的区别都有哪些? 4. Redis 相比 Memcached 有哪些优势? 5. 如何实现本地缓存?请描述一下你知道的方式 6. Redis 通讯协议是什么?有什么特点? 二、Redis 数据结构与指令 1. Redis 支持的数据类型 2. Redis 常用的命令有哪些? 3. 一个字符串类型的值能存储最大容量是多少? 4. Redis 各个数据类型最大存储量分别是多少? 5. 请介绍一下 Redis 的数据类型 SortedSet(zset)以及底层实现机制? 6. Redis 事务相关命令有哪些? 7. 什么是 Redis 事务?原理是什么? 8. Redis 事务的注意点有哪些? 9. Redis 为什么不支持回滚? 10. 请介绍一下 Redis 的 Pipeline(管道),以及使用场景 11. 请说明一下 Redis 的批量命令与 Pipeline 有什么不同? 12. 请介绍一下 Redis 的发布订阅功能 13. Redis 的链表数据结构的特征有哪些? 14. 请介绍一下 Redis 的 String 类型底层实现? 15. Redis 的 String 类型使用 SSD 方式实现的好处? 16.

springCloud集成分布式事务LCN 5.0.2

牧云@^-^@ 提交于 2019-12-21 00:01:35
TX-LCN的3种模式 LCN5.0.2有3种模式,分别是LCN模式,TCC模式,TXC模式 LCN模式: LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务提交回滚或者关闭连接时将会执行假操作,该代理的连接将由LCN连接池管理。 该模式的特点: - 该模式对代码的嵌入性为低。 - 该模式仅限于本地存在连接对象且可通过连接对象控制事务的模块。 - 该模式下的事务提交与回滚是由本地事务方控制,对于数据一致性上有较高的保障。 - 该模式缺陷在于代理的连接需要随事务发起方一共释放连接,增加了连接占用的时间。 TCC模式: TCC事务机制相对于传统事务机制(X/Open XA Two-Phase-Commit),其特征在于它不依赖资源管理器(RM)对XA的支持,而是通过对(由业务系统提供的)业务逻辑的调度来实现分布式事务。主要由三步操作,Try: 尝试执行业务、 Confirm:确认执行业务、 Cancel: 取消执行业务。 该模式的特点: - 该模式对代码的嵌入性高,要求每个业务需要写三种步骤的操作。 - 该模式对有无本地事务控制都可以支持使用面广。 - 数据一致性控制几乎完全由开发者控制,对业务开发难度要求高。 TXC模式: TXC模式命名来源于淘宝,实现原理是在执行SQL之前,先查询SQL的影响数据

Oracle事务和常用数据库对象

孤者浪人 提交于 2019-12-20 22:50:40
博文结构 事务的使用 索引的使用 视图的作用 序列、同义词的使用 分区表的概念 一.事务 Oracle通过事务来保证数据库中数据的一致性。 事务的含义 事务就是业务上的一个逻辑单元,它能够保证其中对数据所有的操作要么全部成功,要么全部失败 事务开始于一条可执行的SQL语句,继续执行事务主体,然后结束于以下的任意一种情况。 显式提交(commit): 当事务遇到cormmit指令时,将结束事务并永久保存所有更改的数据。 显式回滚(ollback); 当事务遇到rollback指令时,也将结束事务的执行,但是此时它回滚 所有更改的数据到事务开始时的原始值,即取消更改。 DDL语句:一旦用户执行了DDL (Data DefinitionLanguage,数据定义语言,如 CREATE. DROP 等)语句,则之前所有的DML (Data Manipulation Language,数据操作语言)操作将作为一 个事务提交.这种提交称为隐式提交。 正常结束程序:如果Oracle数据库应用程序正常结束,如使用SQL Plus工具更改了数据, 而正常退出该程序(输入"exit"), 则Oracle 自动提交事务。 非正常地结束程序:当程序崩溃或意外中止时,所有数据更改都被回滚,这种回滚称为隐 式回滚。. 事务的特点 事务的四个特性,即原子性(Atomicity). - 致性

spring-boot-mybaits 开启事务

天涯浪子 提交于 2019-12-20 20:30:15
来源参考文章: https://blog.csdn.net/wohaqiyi/article/details/72895983 http://www.cnblogs.com/xusir/p/3650522.html 要点: 1、需要的注解为 @EnableTra nsactionManagement 和 @Transactional 两个,它们来自于下边这个包:(一般只要配好srping-boot-mybaits就有) spring-tx.jar 关于@ EnableTra nsactionManagement 如下 @SpringBootApplication @EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解 @MapperScan("cloud.kafka.mapper") //扫描的是mapper.xml中namespace指向值的包位置 public class KafkaLogApplication { public static void main(String[] args){ SpringApplication.run(KafkaLogApplication.class, args); } } 关于@ Transactional 如下 spring事务特性

oracle运行机制

不问归期 提交于 2019-12-20 18:18:51
我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求,下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲: 专用服务器模式下: 一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。我们把这种连接叫做HAND-OFF连接,也叫转换连接。 另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了

mysql学习笔记之隔离级别

本秂侑毒 提交于 2019-12-20 17:02:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 隔离级别为四种分别解决脏读,不可重复度,幻读等问题 脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。 不可重复读:一个事务对同一行数据重复读取两次,但是却得到了不同的结果。例如,在两次读取的中途,有另外一个事务对该型数据进行了修改,并提交。 幻读:一个线程事务读取到相关数据就一条,第二次读出现两条,新增的一条为另外一个线程事务提交插入的数据。 上图为各个隔离级别对应的问题 show variables like '%iso%'; 查看目前数据库的隔离级别 set @@session.tx_isolation = 'READ-COMMITTED'; --设置局部 set @@session.tx_isolation = 'REPEATABLE-READ'; 局 @@session 全 @@global 级联回滚(5.7.22后不会发生) 事务是需要手动提交和回滚的 来源: oschina 链接: https://my.oschina.net/u/3914215/blog/3145394