回滚

MySQL 日志

梦想的初衷 提交于 2020-02-07 21:37:59
MySql 中有六种日志文件:重做日志(redo log),回滚日志(undo log),二进制日志(bin log),错误日志(errlog),慢查询日志(slow query log),一般查询日志(general log),中继日志(relay log)。 这其中重做日志和回滚日志与事务操作息息相关,二进制日志与事务操作有一定关系,这篇文章我们来看看这三种日志能做什么。 重做日志(redo log) 作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,重启 mysql 服务的时候,会根据 redo log进行重做,从而达到事务的持久性这一特性。 内容:物理格式的日志,记录的是物理数据页面的修改信息,其 redo log 是顺序写入 redo log file 的物理文件中去的。 产生时间:事务开始后就产生了 redo log。在事务执行的过程中,便开始写入 redo log 文件中。 释放:当对应事务的脏页写入到磁盘之后,redo log 的使命也就完成了。 回滚日志(undo log) 作用:保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC)。 内容:逻辑格式的日志,在执行 undo 的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现。 产生时间:事务开始之前,将当前版本生成 undo

大数据之Zookeeper(上)

隐身守侯 提交于 2020-02-07 20:55:29
1 分布式概述 早起我们使用单体架构,即所有的服务都部署在一台服务器的一个进程中,随着互联网的发展,逐步演进为分布式架构,多个服务分别部署在不同机器的不同进程中。 2 Zookeeper概述 Zookeeper是一个开源的分布式协调服务,提供分布式数据一致性解决方案,分布式应用程序可以实现数据发布订阅、负载均衡、命名服务、集群管理分布式锁、分布式队列等功能。 Zookeeper提供了分布式数据一致性的解决访问,那么什么是分布式数据一致性? 如上图所示,有用户user在DB1中修改balance为900,如果user下一次read请求到DB2数据库的时候,此时DB1数据库的数据还没及时更新到DB2中,就会造成整个数据库集群数据不一致。 数据一致性分为强一致性和最终一致性,强一致性指的是如果数据不一致,就不对外提供数据服务,保证用户读写的数据始终是一致的。数据强一致性值需要通过锁机制即可解决,在案例中通过在DB2没有从DB1同步数据之前上锁,不对外提供读操作。只要当同步完成以后才对外提供服务。而最终一致性要求数据最终同步即可,没有实时要求。 3 CAP原则 CAP在分布式系统中主要指的是一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。 一致性:一致性指的就是强一致性。 可用性:系统提供的服务一直处于可用状态

oracle系统表查询

一世执手 提交于 2020-02-07 09:51:18
                    oracle系统表查询 oracle查询用户下的所有表 select * from all_tab_comments -- 查询所有用户的表,视图等 select * from user_tab_comments -- 查询本用户的表,视图等 select * from all_col_comments --查询所有用户的表的列名和注释. select * from user_col_comments -- 查询本用户的表的列名和注释 select * from all_tab_columns --查询所有用户的表的列名等信息(详细但是没有备注). select * from user_tab_columns --查询本用户的表的列名等信息(详细但是没有备注). --一般使用1: select t.table_name,t.comments from user_tab_comments t --一般使用2: select r1, r2, r3, r5 from (select a.table_name r1, a.column_name r2, a.comments r3 from user_col_comments a), (select t.table_name r4, t.comments r5 from user_tab

Kubernetes(十九)Deployment

≯℡__Kan透↙ 提交于 2020-02-04 13:55:07
官网链接 https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/ kubernetes提供的控制器列表 ReplicaSet 确保任何时间都有指定的数量Pod副本在运行(Deployment已经包含该功能)。 ReplicationController 确保任何时候都有特定的Pod副本处于运行状态(Deployment已经包含该功能)。 Deployment 是kubernetes最常用的控制器,主要是用于部署无状态应用;我们平时开发的web、webapi、微服务都是无状态应用; StatefulSet 主要是用于部署有状态应用;比如redis、mysql等。 DaemonSet 确保全部或某些节点上运行一个Pod副本。当有节点加入集群时,也会为他们新增一个Pod。当节点从集群中移除时候,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod.主要用于运行存储插件、监控插件、日志插件等。 TTL控制器 现在只支持job,主要用来限制已经完成执行的资源对象的生命周期。 Jobs-Run to Completion 主要用于三种任务类型:非并行作业、固定完成计数的并行作业、具有工作队列的并行作业。 CronJob 根据设定的时间表运行作业。 Deployment 介绍 官网链接

数据库:事务

你离开我真会死。 提交于 2020-02-03 21:23:30
1. 什么是事务? 事务是对数据库中一系列操作进行统一回滚或者提交的操作,主要用来保证数据的完整性和一致性。 2. 事务四大特性(ACID)原子性、一致性、隔离性、持久性? 2.1 原子性(Atomicity):   原子性是指事物包含的所有操作要么全部成功,要么全部失败回滚,因此事物的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 2.2 一致性(Consisitency):   事物开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到。 2.3 隔离性(Isolation):   隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他的事物所干扰,多个并发事务之间要相互隔离。同一时间,只允许一个事务请求同一数据,不同事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。 2.4 持久性(Durability):   持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。 3. 事务的并发? 3.1 脏读: 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据就是脏数据。 3.2 不可重复读: 事务A多次读取同一数据

Transactional详细信息

孤者浪人 提交于 2020-02-03 21:21:50
Transactional能入的值 isolation:事务的隔离级别 propagation:事务的传播行为 noRollbackFor:哪些异常事务可以不回滚(输入类型) noRollbackForClassName:哪些异常事务可以不回滚(输入全类名) rollbackFor:哪些异常事务需要回滚(输入类型) rollbackForClassName:哪些异常事务需要回滚(输入全类名) readOnly:设置事务只读 (默认为false)这个属性只能够使用在查询sql中。 timeout:事务超出指定时间后进行回滚(以秒为单位) 此文章就展示项目架构了项目架构请看 此文章 案例 timeout 案例 错误提示 readOnly 案例 错误提示 PreparedStatementCallback; SQL [update balance set price = price - ? where name= ?]; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification

Java的JDBC事务详解

牧云@^-^@ 提交于 2020-02-03 04:45:51
Java的JDBC事务详解 分类: Hibernate 2010-06-02 10:04 12298人阅读 评论 (9) 收藏 举报 jdbc java 数据库 sql server delete insert 事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。 2) 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。 3) 隔离性(isolation):一个事务的执行不能被其他事务所影响。 4) 持久性(durability):一个事务一旦提交,事物的操作便永久性的保存在DB中。即使此时再执行回滚操作也不能撤消所做的更改。 事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,sql server 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常是以begin transaction开始,以commit或rollback结束。Commint表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正常结束

SQLite进阶-18.事务

孤人 提交于 2020-02-03 04:35:24
目录 SQLite事务 事务的属性 事务控制 BEGIN TRANSACTION命令 COMMIT命令 ROLLBACK命令 SQLite事务 事务(Transaction) 是一个对数据库执行工作单元。事务是以逻辑顺序完成的工作单元或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。 事务是指一个或者多个改变数据库的扩展。例如:如果你正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么你正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库错误。 实际上,你可以把许多的SQLite查询联合成一组,把所有这些放在一起作为事务的一部分进行执行。 事务的属性 事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为ACID: 原子性(Atomicity) : 确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终止,之前的操作也会回滚到以前的状态。 一致性(Consistency) : 确保数据库在成功提交的事务上正确的改变状态。 隔离性(Isolation) : 使事务操作相互独立和透明。 持久性(Durability) : 确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。 事务控制 使用下面的命令来控制事务: BEGIN TRANSACTION: 开始事务处理。 COMMIT: 保持更改,或者可以使用END

mysql innodb引擎的事务

痴心易碎 提交于 2020-02-02 23:52:54
数据库事务是数据库执行过程中的一个逻辑单位,一个事务通常包含了对数据库的读/写操作。它的存在包含有以下两个目的:1.为数据库操作序列提供了一个回滚的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。(就是提供了事务隔离级别设置来处理并发问题) 一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。** 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 ** 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。** 4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。** 二、事务并发问题名词解释 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2

spring @Transactional注解参数详解(13)

非 Y 不嫁゛ 提交于 2020-02-02 04:31:57
事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需要事物时: 1 @Transactional 2 public class TestServiceBean implements TestService { 3 private TestDao dao; 4 public void setDao(TestDao dao) { 5 this.dao = dao; 6 } 7 @Transactional(propagation =Propagation.NOT_SUPPORTED) 8 public List getAll() { 9 return null; 10 } 11 } 事物传播行为介绍:   @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)   @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务   @Transactional(propagation