数据库事务

Redis的持久化、事务、事件

风流意气都作罢 提交于 2020-02-11 06:33:10
一、持久化 Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。 RDB持久化 将某个时间点的所有数据都存放到硬盘上。 可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。 如果系统发生故障,将会丢失最后一次创建快照之后的数据。 如果数据量很大,保存快照的时间会很长。 AOF持久化 将写命令添加到 AOF 文件(Append Only File)的末尾。 使用 AOF 持久化需要设置同步选项,从而确保写命令同步到磁盘文件上的时机。这是因为对文件进行写入并不会马上将内容同步到磁盘上,而是先存储到缓冲区,然后由操作系统决定什么时候同步到磁盘。有以下同步选项: 选项 同步频率 always 每个写命令都同步 everysec 每秒同步一次 no 让操作系统来决定何时同步 always 选项会严重减低服务器的性能; everysec 选项比较合适,可以保证系统崩溃时只会丢失一秒左右的数据,并且 Redis 每秒执行一次同步对服务器性能几乎没有任何影响; no 选项并不能给服务器性能带来多大的提升,而且也会增加系统崩溃时数据丢失的数量。 随着服务器写请求的增多,AOF 文件会越来越大。Redis 提供了一种将 AOF 重写的特性,能够去除 AOF 文件中的冗余写命令。 二、事务 一个事务包含了多个命令,服务器在执行事务期间

mysql网文收录

坚强是说给别人听的谎言 提交于 2020-02-11 02:04:57
1、分布式事务 1) 聊聊分布式事务,再说说解决方案 https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html 2) 分布式系统事务一致性解决方案 http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency 3) 从银行转账失败到分布式事务:总结与思考 https://www.cnblogs.com/xybaby/p/7465816.html 4) 详解Mysql分布式事务XA(跨数据库事务) https://blog.csdn.net/soonfly/article/details/70677138 5) MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等) https://blog.csdn.net/mysteryhaohao/article/details/51669741 来源: https://www.cnblogs.com/AndrewGhost/p/9102511.html

数据库事务

纵然是瞬间 提交于 2020-02-11 02:03:11
一.本地数据库事务 1.事务ACID理解 原子性【Atomicity】:一次事务的多次操作是原子的,要么全部执行,要么全部不执行。 一致性【Consistency】:事务前后数据库的约束保持一致性,比如键值约束。 隔离性【Isolation】:事务之前有一定隔离机制,不用隔离级别。 持久性【Durability】:事务提交成功数据被持久化到数据库中存储。 2.隔离级别 读未提交 读已提交 可重复读 串行 3.锁的分类 悲观锁 乐观锁 共享锁【读锁】 排他锁【写锁】 更新锁 ACID的详解:https://www.cnblogs.com/wyf19891208/p/6834454.html 事务详解:https://blog.csdn.net/aluomaidi/article/details/52460844 二.分布式事务 https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html https://www.cnblogs.com/taiyonghai/p/6094350.html https://blog.csdn.net/X5fnncxzq4/article/details/79235790 来源: https://www.cnblogs.com/xiaofugua/p

事务

爱⌒轻易说出口 提交于 2020-02-10 20:49:44
select * from 表名 where 条件 id > 10 insert into 表名 values() update 表名 set name = ‘’ where id = 1 delete 表名 where 事务 事务的四大特性(ACID): 原子性(atomicity) 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位. 一致性(consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 例:拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别 脏读 不可重复读 幻读 1.脏读(Phantom Read): 脏读就是指当一个事务正在访问数据,并且对数据进行了修改

InnoDB 事务加锁分析

六月ゝ 毕业季﹏ 提交于 2020-02-10 11:16:22
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/S7MhlsZveBHRSQhq5aTIJA 作者:何志创 一般大家对数据库事务的了解可能停留在事务的ACID特性以及事务4种不同的隔离级别层面上,而对于事务 4 种不同隔离级别如何实现了解相对较少。 本文以 MySQL 数据库 InnoDB 引擎为例,为大家分析 InnoDB数据库引擎对默认的隔离级别可重复读(RR)的具体实现。 整文知识点介绍:事务4种隔离级别、不同隔离级别解决的问题、MVCC、锁的类型、加锁案例分析;阅读完整文相信大家对事务隔离级别的具体实现有了一定的认识。 一、事务的隔离级别 1、4 种隔离级别 (1)未提交读(Read uncommitted): 一个事务读取到其他事务未提交的数据,是级别最低的隔离机制; (2)提交读(Read committed): 一个事务读取到其他事务提交后的数据; (3)可重复读(Repeatable read): 一个事务对同一份数据读取到的相同,不在乎其他事务对数据的修改; (4)序列化(Serializable) : 事务串行化执行,隔离级别最高,牺牲了系统的并发性。 2、不同隔离级别解决的问题 若不考虑事务的隔离级别,则事务的并发会造成以下问题: (1)脏读: 事务A读取了事务B更新的数据,然后B回滚操作

mysql三:表操作

喜你入骨 提交于 2020-02-10 04:58:14
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方 法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 操作此表的类型) 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql 数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据 自己的需要编写自己的存储引擎 SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL 的插件式存储引擎可以让存储引擎层的开发人员设 计他们希望的存储层,例如,有的应用需要满足事务的要求,有的应用则不需要对事务有这 么强的要求 ;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据 的查询。

企业应用架构模式笔记

帅比萌擦擦* 提交于 2020-02-10 04:16:55
1      企业应用模式概述   1.1    企业应用的模式   企业应用领域要解决的问题在某些方面要比做一个工具软件、或者一个电信通信软件等复杂的得多,比如纷杂的企业数据,各具特色的业务规则,变化莫测的用户需求。因此企业应用开发技术从CORBA、COM、J2EE、_NET等等,层出不穷,每一种技术的出现,都为企业问题的解决题供了一种思路,一个选择。   既然企业的问题是特定,那么我们就可以把问题进行分类,并把每一类问题的解决方法记录下来,这样,就形成了一套我们解决问题的思路,这就是模式。模式的核心就是特定的解决方案,它有效且有足够的通用性。借用一下Christopher Alexander给出的模式的定义:“每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。   模式的关键点是它们来源于实践,他必须观察人们的工作过程,发现其中好的设计,并找出这些解决方案的核心,一旦发现了某个模式,那将是非常有价值的。当然,如果要学习一个模式,只是需要了解这些模式是干什么的、解决了那些问题、是如何解决问题的,就足够了。    企业架构的领域问题有许多,如分层架构、Web表现、业务逻辑、数据库映射、并发、会话、分布策略、异步通信、安全、错误处理、集群、应用集成、架构重构。在此只选择了其中企业级应用程序的分层

oracle-11g-闪回技术

*爱你&永不变心* 提交于 2020-02-10 01:04:25
一.4种闪回技术: ①闪回数据库   以当前数据库为起点,在时间上回退,逐步改变知道顺序回退完成的所有工作。最终的结果就像是执行了不完整恢复,将丢失闪回点之后的所有工作,   并且实际上得使用resetlogs打开数据库。         !!!!!闪回数据库不能撤销物理损坏,只能恢复由用户错误造成的逻辑错误。 ②闪回查询、事务和表   三种闪回技术都基于使用撤销段(undo段)。     (1)闪回查询:允许查询过去某个时间的数据库,利用此技术甚至可以选取过去某段时间内一个行的所有版本,以便了解改行的历史操作,包括操作        时间、操作人和做出每个更改的事务的标识符。     (2)闪回事务自动执行修复过程。一旦使用了闪回查询确认了引起问题的事务,oracle可以构造SQL语句来反转事务中的更改。无法回滚提交的更改,       但可以构造另一事务以反转第一个错误事务的影响。与闪回数据不同的是:闪回事务并不会丢失数据,所做的其他所有工作仍然有效,并且数据库保持当前状态。     (3)闪回表:指示oracle反转从特定时间点以来对该表所做的所有更改,而保持其他所有表的当前状态。 ③闪回删除:可以撤销删除一个表,通过将drop命令映射到rename命令实现,不能实现truncate的闪回,purge的闪回,,可以还原任何相关的索引       及权限和表本身(外键约束除外)

数据库的索引和锁

荒凉一梦 提交于 2020-02-09 20:10:34
一、索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度 表经常进行 INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。 -索引需要占物理和数据空间。 了解过索引的最左匹配原则 知道索引的分类:聚集索引和非聚集索引 Mysql支持Hash索引和B+树索引两种 看起来好像啥都知道,但面试让你说的时候可能就GG了: 使用索引为什么可以加快数据库的检索速度啊? 为什么说索引会降低插入、删除、修改等维护任务的速度。 索引的最左匹配原则指的是什么? Hash索引和B+树索引有什么区别?主流的使用哪一个比较多?InnoDB存储都支持吗? 聚集索引和非聚集索引有什么区别? … 1.1聊聊索引的基础知识 首先Mysql的基本存储结构是页(记录都存在页里边): 各个数据页可以组成一个双向链表 而每个数据页中的记录又可以组成一个单向链表 每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录 以其他列(非主键)作为搜索条件:只能从最小记录开始依次遍历单链表中的每条记录。 所以说,如果我们写 select*fromuserwhereusername='Java3y’这样没有进行任何优化的sql语句

第1章 MySQL架构与历史

余生长醉 提交于 2020-02-09 19:54:34
MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式 1.1 MySQL逻辑架构 最上层服务大多数系统都有,连接处理、授权认证、安全等等 第二层包含MySQL的大多数核心功能 第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取 1.1.1 连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。 当客户端连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。如果使用了 安全套接字 SSL)的方式连接,还可以使用X.059证书认证。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限(例如,是否允许客户端对world数据库的Country表执行SELECT语句)。 1.1.2 优化与执行 MySQL会解析查询,并创建内部数据结构,然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。 对于SELECT语句,在解析查询之前