数据库事务

mysql事务详解

ぃ、小莉子 提交于 2020-02-28 03:31:55
事务的四大特性 1.原子性(Atomicity) 要么全做,要么全不做的规则称之为原子性。比如说转账,要么成功要么失败. 2.一致性(Consistency) 如果数据库中的数据全部符合现实世界中的约束(all defined rules),我们说这些数据就是一致的,或者说符合一致性的。比如身份证号不能重复 更多的一致性需求需要靠写业务代码的程序员自己保证。比如说金额不能小于0 , 性别只能是男或女. 3.隔离性(Isolation) 对某些数据库操作来说,不仅要保证这些操作以原子性的方式执行完成,而且要保证其它的状态转换不会影响到本次状态转换,这个规则被称之为隔离性。 4.持久性(Durability) 转换的结果将永久的保留,这个规则被称为持久性. 也就意味味着该转换对应的数据库操作所修改的数据都应该在磁盘上保留下来 MySQL中事务的语法 只有InnoDB和NDB存储引擎支持事务.如果表不支持事务,那么将无法回滚. 不显式的开启事务,那么每一条sql都是一个独立的事务 开启一个事务 BEGIN; START TRANSACTION; START TRANSACTION语句后边跟随几个修饰符,就是它们几个: READ WRITE:标识当前事务是一个只读事务 READ WRITE:标识当前事务是一个读写事务 WITH CONSISTENT SNAPSHOT:启动一致性读 提交事务

干货分享,值得收藏:搞懂这些redis知识点,还怕干不过面试官?

爷,独闯天下 提交于 2020-02-28 00:49:45
是数据结构而非类型 很多文章都会说,redis支持5种常用的数据类型,这其实是存在很大的歧义。redis里存的都是二进制数据,其实就是字节数组(byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,整数或对象,此时才具有数据类型。 这一点必须要记住。所以任何东西只要能转化成字节数组(byte[])的,都可以存到redis里。管你是字符串、数字、对象、图片、声音、视频、还是文件,只要变成byte数组。 因此redis里的String指的并不是字符串,它其实表示的是一种最简单的数据结构,即一个key只能对应一个value。这里的key和value都是byte数组,只不过key一般是由一个字符串转换成的byte数组,value则根据实际需要而定。 在特定情况下,对value也会有一些要求,比如要进行自增或自减操作,那value对应的byte数组必须要能被解码成一个数字才行,否则会报错。 那么List这种数据结构,其实表示一个key可以对应多个value,且value之间是有先后顺序的,value值可以重复。 Set这种数据结构,表示一个key可以对应多个value,且value之间是没有先后顺序的,value值也不可以重复。 Hash这种数据结构,表示一个key可以对应多个key-value对,此时这些key

事务并发机制

本秂侑毒 提交于 2020-02-27 14:30:37
注:原文转自 https://blog.csdn.net/Yuncoco/article/details/92801100 一、 事务4个特性ACID 原子性(Atomic),事务必须是原子工作单元; 一致性(Consistent),事务在完成时,必须使所有的数据都保持一致状态。 隔离性(Insulation),由事务并发所作的修改必须与任何其它并发事务所作的修改隔离。 持久性(Duration),事务完成之后,它对于系统的影响是永久性的。 二、事务并发 通常为了获得更好的运行性能,各种数据库都允许多个事务同时运行,这就是事务并发。 三、 隔离机制 当并发的事务访问或修改数据库中相同的数据(同一行同一列)时,通常需要采取必要的隔离机制。 解决并发问题的途径是什么? 答案是:采取有效的隔离机制。 怎样实现事务的隔离呢?隔离机制的实现必须使用锁 四、事务并发带来的问题 以下事务都是发生在毫秒级的时间差 JPA只能处理第一、二类丢失更新,其他3种必须由数据库自己处理 1.第一类丢失更新:(在秒杀场景会出现问题) 库存是1件 当事务A和事务B同时修改某行的值, 1.事务A将数值改为0并提交,购买了一件 2.事务B将数值改为0并提交,也购买了一件。这时数据的值为0,事务A所做的更新将会丢失。(相当于就卖出去2件商品) 解决办法:对行加锁,只允许并发一个更新事务。(JPA中的悲观锁,乐观锁)

python面试题 -- 网编并发

白昼怎懂夜的黑 提交于 2020-02-27 12:21:54
Python面试重点(进阶篇) 注意:只有必答题部分计算分值,补充题不计算分值。 第一部分 必答题 简述 OSI 7层模型及其作用?(2分) # 应用层:文件传输,文件管理,电子邮件的信息处理# 表示层:确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密# 会话层:验证访问和会话管理# 传输层:为应用程序之间提供端对端的逻辑通信。# 网络层:选择合适的网间路由完成两个计算机之间的多个数据链路,通过路由协议和地址解析协议(ARP)。IP,RIP(路由信息协议),OSPF(最短路径优先协议)# 数据链路层:在物理层提供的比特流的基础上,建立相邻节点之间的数据链路,不可靠的物理介质提供可靠传输 ppp协议# 物理层:规定通信设备,通信链路的特性 简述 TCP三次握手、四次回收的流程。(3分) # 第一次握手:客户端首先向服务端发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的),消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。# 第二次握手:服务端收到客户端的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1,然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后,服务端进入SYN

Spring5学习(六)Spring 事务

家住魔仙堡 提交于 2020-02-27 08:27:11
Spring 事务 1. 事务 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 事务是恢复和 并发控制 的基本单位。 2. 为什么要事务 事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。 3. 事务的4个特性(ACID) 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID特性 。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。指一个事务一旦提交

MySQL的视图、事务和索引

陌路散爱 提交于 2020-02-27 05:02:56
视图 1. 为什么要有视图 对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦 解决办法:定义视图 2. 视图是什么 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变); 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性; 3. 定义视图 建议以v_开头 create view 视图名称 as select语句; 4. 查看视图 查看表会将所有的视图也列出来 show tables; 5. 使用视图 视图的用途就是查询 select * from v_stu_score; 6. 删除视图 drop view 视图名称; 例: drop view v_stu_sco; 8. 视图的作用 提高了重用性,就像一个函数 对数据库重构,却不影响程序的运行 提高了安全性能,可以对不同的用户 让数据更加清晰 事务 1. 为什么要有事务 事务广泛的运用于订单系统、银行系统等多种场景 例如: A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事: 检查A的账户余额

MySQL——事务

蹲街弑〆低调 提交于 2020-02-27 03:02:11
事务处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么全部执行,要么全部不执行。在使用事务和事务处理时,有几个关键词会反复出现 事务: 指一组SQL语句 回滚: 指撤销指定SQL语句的过程 提交: 将未存储的SQL语句结果写入数据库表 保留点: 事务处理过程中设置的临时占位符,可以对它发布回退 事务的四大特性 原子性: 事务中所有的操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败 一致性: 事务执行后,数据库状态与其业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的 隔离性: 并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰 持久性: 一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据 基本语法 //开启事务 START TRANSACTION; //提交事务 COMMIT; //回滚事务 ROLLBACK; ROLLBACk COMMIT 使用保留点 ps:本篇文章参考《MySQL必知必会》 来源: oschina 链接: https://my.oschina.net/u/4427158/blog/3165409

2020PHP面试-Redis篇

匆匆过客 提交于 2020-02-26 23:48:23
一、Redis 数据类型 1. string 字符型。 2.hash hash 结构化的对象。 key不可重复 3.list 队列 lpush rpop lpop rpush 4. set 集合 value不可重复 5. zset 有序集合 set的基础上加了分数(排序)。 二、Redis事务 1.multi (事务启动) 、 exec (事务执行) 、 watch(监视某几个键有没有被别的客户端进行修改,一旦有任何的键被修改过,exec的时候都会直接返回一个nil,不执行事务)、discard(立刻取消事务,清空事务队列中所有命令)。 2.redis数据库里会存在一个watched_keys字典,这个字典里 key为被监视的key,值为一个链表,链表里记录着监视该key的客户端,一旦被监视的key发生了修改,该key对应的客户端会打开REDIS_DIRTY_CAS标识,代表该客户端的事务安全性被破坏了。这就是watch命令的实现。 3.为什么redis的事务不支持回滚?   因为这种复杂的功能和redis的设计理念不符。并且redis事务中出错原因通常是编程错误,只在开发环境出现,生产环境可避免。 4.redis事务中命令执行出错的结果?   redis并不会中断事务的执行,会继续执行后续的操作命令。exec的时候,出错的命令会被标识出来,并给出原因。 5.

SQL进阶(1)——MySQL元数据与索引

混江龙づ霸主 提交于 2020-02-26 23:11:09
文章目录 1.mysql元数据 获取服务器元数据 2.mysql函数 2.1 常用的字符串函数 2.2 数字函数 2.3 日期函数 2.4 高级函数 3.MySQL索引 3.1 普通索引 3.1.1 创建索引 3.1.2 修改表结构(添加索引) 3.1.3 创建表的时候直接指定 3.1.3 删除索引的语法 3.2 唯一索引 3.2.1 创建索引 3.2.2 修改表结构 3.2.3 创建表的时候直接指定 3.3 使用ALTER 命令添加和删除索引 3.4 使用 ALTER 命令添加和删除主键 3.5 显示索引信息 4.MySQL 事务 4.1、事务控制语句: 4.2、MYSQL 事务处理主要有两种方法: 1.mysql元数据 你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。 数据库和数据表的信息: 包含了数据库及数据表的结构信息。 MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等。 在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息。 获取服务器元数据 以下命令语句可以在 MySQL 的命令提示符使用,也可以在脚本中 使用,如PHP脚本。 命令 描述 SELECT VERSION( ) 服务器版本信息 SELECT DATABASE( ) 当前数据库名 (或者返回空) SELECT

Dream_Spark-----Spark 定制版:004~Spark Streaming事务处理彻底掌握

て烟熏妆下的殇ゞ 提交于 2020-02-26 22:56:41
Spark 定制版:004~Spark Streaming事务处理彻底掌握 本讲内容: a. Exactly Once b. 输出不重复 注:本讲内容基于 Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解。 上节回顾: 上节课 通过案例透视了Spark Streaming Job 架构 和运行机,并结合源码进行了详细解说;同时也了解了Spark Streaming Job的容错机制,包括 Executor 与 Driver两方面的容错机制。 也就是说Job的事务处理,主要是在Executor 与 Driver两个应用中展开 开讲 首先,我们必须知道什么是事务及其一致性? 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使 数据库 从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交