数据库事务

【Redis】事务 (超详细)

守給你的承諾、 提交于 2020-02-05 13:45:28
一、概述 二、相关命令列表 2.1 MULTI 2.2 EXEC 2.3 DISCARD 2.4 WATCH key [key ...] 2.5 UNWATCH 三、命令示例 3.1 事务被正常执行 3.2 事务中存在失败的命令 3.3 回滚事务 四、WATCH命令和基于CAS的乐观锁 五、SpringBoot操作Redis事务 六、Redis集群事物 一、概述 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出Redis中事务的实现特征: 1). 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务,从而保证了事物中的所有命令被原子的执行。 2). 和关系型数据库中的事务相比,在Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行。 3). 我们可以通过MULTI命令开启一个事务,有关系型数据库开发经验的人可以将其理解为"BEGIN TRANSACTION"语句。在该语句之后执行的命令都将被视为事务之内的操作,最后我们可以通过执行EXEC/DISCARD命令来提交/回滚该事务内的所有操作

Redis学习手册(事务)

丶灬走出姿态 提交于 2020-02-05 13:41:10
一、概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出Redis中事务的实现特征: 1). 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务,从而保证了事物中的所有命令被原子的执行。 2). 和关系型数据库中的事务相比,在Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行。 3). 我们可以通过MULTI命令开启一个事务,有关系型数据库开发经验的人可以将其理解为"BEGIN TRANSACTION"语句。在该语句之后执行的命令都将被视为事务之内的操作,最后我们可以通过执行EXEC/DISCARD命令来提交/回滚该事务内的所有操作。这两个Redis命令可被视为等同于关系型数据库中的COMMIT/ROLLBACK语句。 4). 在事务开启之前,如果客户端与服务器之间出现通讯故障并导致网络断开,其后所有待执行的语句都将不会被服务器执行。然而如果网络中断事件是发生在客户端执行EXEC命令之后,那么该事务中的所有命令都会被服务器执行。 5). 当使用Append-Only模式时

cassandra读写数据

蹲街弑〆低调 提交于 2020-02-05 08:57:31
cassandra读写数据 写 写一致性级别 cassandra的可调一致性级别意味着你可以在查询中指定所需的写操作一致性,一致性级别越高,说明需要更多的副本节点相应才能认为写操作完成,更高的一致性级别还可能带来可用性的下降,因为必须有更多的节点可以使用,写操作才能成功 一致性级别 含义 ANY 返回到客户端之前,确保这个值写入一个副本节点,提示可以算作一个写操作 ONE, TWO, THREE 返回到客户端之前, 确保至少写入1个,2个或3个节点的提交日志和memtable LOCAL_ONE 与ONE类似,不过有额外要求:响应节点应当在本地数据中心 QUORUM 确保至少大多数副本((副本因子/2)+1)接收了写操作 LOCAL_QUORUM 与QUORUM类似,但响应节点应当在本地数据中心 EACH_QUORUM 确保每个数据中心有QUORUM个节点响应 ALL 返回到客户端之前,根据副本因子指定的节点数,确保相应数目的节点接收了写操作,即使只有一个副本没有写操作,操作也会失败 查看默认的一致性级别 cassandra写路径 写路径描述如何处理客户端发起的数据修改查询,最终将把数据存储在磁盘上 客户端向一个cassandra节点发起一个写查询时,写路径开始,这个节点将作为这个请求的协调器。协调器节点使用分区器根据键空间的副本因子确定集群中的哪些节点是副本节点

简单明了的SQL join解释

纵然是瞬间 提交于 2020-02-05 08:48:21
1. 数据库表锁定原理 1.1 目前的C/S,B/S结构都是多用户访问数据库,每个时间点会有成千上万个user来访问DB,其中也会同时存取同一份数据,会造成数据的不一致性或者读脏数据. 1.2 事务的ACID原则 1.3 锁是关系数据库很重要的一部分, 数据库必须有锁的机制来确保数据的完整和一致性. 1.3.1 SQL Server中可以锁定的资源: 1.3.2 锁的粒度: 1.3.3 锁的升级: 锁的升级门限以及锁升级是由系统自动来确定的,不需要用户设置. 1.3.4 锁的类型: (1) 共享锁: 共享锁用于所有的只读数据操作. (2) 修改锁: 修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象 (3) 独占锁: 独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。 (4) 架构锁 结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操作时,SQL Server采用Sch-M锁,编译查询时,SQL Server采用Sch-S锁。 (5) 意向锁 意向锁说明SQL Server有在资源的低层获得共享锁或独占锁的意向。 (6) 批量修改锁 批量复制数据时使用批量修改锁 1.3.4 SQL Server锁类型 (1) HOLDLOCK: 在该表上保持共享锁,直到整个事务结束

数据库存储引擎

假如想象 提交于 2020-02-05 07:28:21
mysql存储引擎概述 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方 法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL 的插件式存储引擎可以让存储引擎层的开发人员设 计他们希望的存储层,例如,有的应用需要满足事务的要求,有的应用则不需要对事务有这 么强的要求 ;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据 的查询。 一种类型表明的是一种存储方式 存储引擎:就是表的类型,不同的类型就会对应不同的处理机制去处理他 事务:就是要么同时成功,要么同时不成功 mysql支持哪些存储引擎? mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。 其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 各种存储引擎的特性 InnoDB MySql 5.6 版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。InnoDB

数据库 -- 存储引擎介绍

孤人 提交于 2020-02-05 06:13:48
mysql引擎介绍 1,概念   mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 mysql支持的存储引擎 MySQL服务器采用了多层设计和独立模块,插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中,图中的Pluggable Storage Engines部分。采用MySQL服务器体系结构,由于在存储级别上(也就是Pluggable Storage Engines)提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。存储引擎就司职与文件系统打交道了。 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。 引用完整性:通过DDL定义的外键,服务器需要强制保持关联数据库的引用完整性。 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。 索引支持

理解事务

淺唱寂寞╮ 提交于 2020-02-04 11:09:37
文章目录 事务的介绍 事务的特性`ACID` 事务的类别 事务的管理 @Transactional 注解 事务的传播行为 事务隔离级别有哪些?MySQL的默认隔离级别是? 事务是什么时候提交的? 嵌套事务(子事务) 事务的介绍 事务是逻辑上的一组操作,要么都执行,要么都不执行。 简单来说事务的目的就是为了 保证数据的一致性 。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务的主要职责是管理我们对数据库的 insert , update , delete 操作,保证SQL要么全部执行,要么全部不执行。 事务的特性 ACID 原子性( A tomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性( C onsistency) 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性( I solation) 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。(事务隔离的级别在下文可以继续看到详细内容) 持久性( D urability) 事务处理结束后,对数据的修改就是永久的

事务处理

試著忘記壹切 提交于 2020-02-04 09:50:46
事务处理 一、事务四特性(ACID) 1、原子性:一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。也就是说如果事务中的某一步出错,所有对数据进行的 2、一致性:事务必须是使数据库从一个状态变到另一个状态。总的状态要一致。 3、隔离性:一个事务的执行不会被其他事务所干扰。 4、持久性:一个事务一旦提交,它对数据改动将是持久性的,其他操作和故障不应使其数据丢失。 二、mysql数据库事务 1、事务的语句 使用START TRANSACTION或者BEGIN来开启一个新事务。 使用COMMIT来提交一个事务,使其操作产生持久性的影响。 使用ROOLBACK来撤回这次事务,取消其产生的影响。 使用SET autocommit来设置是否自动提交事务。 2、默认事务 mysql默认使用autocommit,这意味着每一个语句都是原子性的,其效果相当于把该语句环绕一个begin和commit语句的事务,并且不能使用rollback语句。当该语句执行过程中出现错误时,该语句则被ROOLBACK。 3、事务隔离级别 读未提交:为事务之间提供最小的保护,它使用了特定的锁定策略,允许一个事务在不等待另一个事务结束的情况下继续执行。这种性能的提升降低了一致性,导致了脏读(读取其他事务未提交的数据)等出现。一般在只执行查询操作的情况下使用。 读已提交:采用某种锁定策略

ibatis实现批处理

随声附和 提交于 2020-02-04 07:36:36
最近做一个小项目,用到Spring+iBatis。突然遇到一个很久远,却很实在的问题:在Spring下怎么使用iBatis的批处理实现? 大概是太久没有写Dao了,这部分真的忘得太干净了。 从4个层面分析这部分实现: iBatis的基本实现 基于事务的iBatis的基本实现 基于事务的Spring+iBatis实现 基于回调方式的Spring+iBatis实现 1.iBatis的基本实现 iBatis通过SqlMapClient提供了一组方法用于批处理实现: startBatch() 开始批处理 executeBatch() 执行批处理 代码如下: Java代码 public void create(List<Reply> replyList) { try { // 开始批处理 sqlMapClient.startBatch(); for (Reply reply: replyList) { // 插入操作 sqlMapClient.insert("Reply.create", reply); } // 执行批处理 sqlMapClient.executeBatch(); } catch (Exception e) { e.printStackTrace(); } } 这是基于iBatis的最基本实现,如果你一步一步debug,你会发现:其实,数据库已经执行了插入操作! 因此

Mysql得隔离级别

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