事务

MySQL视图、触发器、事务

为君一笑 提交于 2020-02-08 09:20:14
一、视图 1、什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 2、为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3、如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; drop view teacher2course; 强调 1、在硬盘中,视图只有表结构文件,没有表数据文件 2、视图通常是用于插叙,尽量不要修改视图中的数据 二、触发器   1、在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器    2、为何要用触发器?   答: 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行就会触发触发器的执行,即自动运行另外一段sql代码 -- 语法: delimiter // create trigger trigger名 after/before insert/delete/update on 表名 for each row begin sql代码。。。 END // delimiter ; -- 解释: -- after 事件执行之后触发 before 事件执行之前触发 -- 触发事件 insert

DynamoDB 读取请求单位和写入请求单位

我的未来我决定 提交于 2020-02-08 09:01:22
按需模式 对于按需模式表,您无需指定预期应用程序执行的读取和写入吞吐量。DynamoDB 会按照读取请求单位和写入请求单位对应用程序在表上执行的读取和写入操作收费。 一个 读取请求单位 表示对大小最多为 4 KB 的项目执行一次强一致性读取请求,或执行两次最终一致性读取请求。事务读取请求需要 2 个读取请求单位才能对大小最多为 4 KB 的项目执行一次读取。如果您需要读取大于 4 KB 的项目,DynamoDB 需要额外的读取请求单位。所需的读取请求单位的总数取决于项目大小以及您需要最终一致性读取还是强一致性读取。例如,如果您的项目大小为 8 KB,您需要 2 个读取请求单位才能承受一次强一致性读取;如果您选择最终一致性读取,则需要 1 个读取请求单位;而对于事务读取请求,则需要 4 个读取请求单位。 注意 要了解有关 DynamoDB 读取一致性模型的更多信息,请参阅 读取一致性 。 一个 写入请求单位 表示对大小最多为 1 KB 的项目执行一次写入。如果您需要写入大于 1 KB 的项目,DynamoDB 需要消耗额外的写入请求单位。事务写入请求需要 2 个写入请求单位才能对大小最多为 1 KB 的项目执行一次写入。所需的写入请求单位的总数取决于项目大小。例如,如果您的项大小为 2 KB,您需要 2 个写入请求单位才能承受一个读取请求;而对于事务写入请求,则需要 4

mysql事务回滚机制概述

柔情痞子 提交于 2020-02-08 05:11:47
应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码; 2 连接数据库,验证密码; 3 验证成功,获得用户信息,比如存款余额等; 4 用户输入需要取款的金额,按下确认键; 5 从后台数据库中减掉用户账户上的对应金额; 6 ATM吐出钱; 7 用户把钱拿走。 对于上面的取钱这个事情,如果有一步出现错误的话,那么就会取消整个取钱的动作,但是如果在第5步,系统后台已经把钱减了,但是ATM机没有取出来,那么就应用到mysql中的事务。简单地 来说,就是取钱这7步要么都完成,要么就啥也不做,在数据库中就是这个道理。 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销,在事务中,每个正确的原子 操作都会被顺序执行,直到遇到错误的原子操作。回滚的意思其实即使如果之前是插入操作的话,那么会执行删除之前插入的记录,如果是修改操作的话,那么会执行将update之前的记录还原。 因此,正确的原子操作是真正被执行过的,是物理执行。 事务是由一条或者多条sql语句组成,在事务的操作中,要么这些sql语句都执行,要么都不执行。 事务的ACID特性:原子性,一致性,隔离性,持久性。 在当前事务中确实能看到插入的记录,最后只不过被删除了,但是auto_increament不会删除而是改变值

pymsql及事务

南笙酒味 提交于 2020-02-08 04:37:14
MySQL知识点补充 1、去重 distinct select distinct name,age from t1; # 针对查找出来的结果整行(记录)进行去重,也就是相同行只保存一个 注意点:distinct 必须放在查询列的第一个(放后面就会报错) 2、保存操作记录 tee tee D:a.txt; 可以把你对于MySQL的所有操作都记录到D盘下的a.txt中(包括一些报错信息) pymysql包的基本用法 基本的查看 import pymysql # 导入pymysql包 conn = pymysql.connect(host='localhost',user='root',password='123',database='db1',charset='utf8') # 连接mysql服务器,必须指定主机、用户、密码和你要使用的数据库 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 实例化拿到光标对象,可以对服务器发送sql语句 # cursor=pymysql.cursors.DictCursor是为了让输出变成字典(列名与值对应),不设置的话就是元组 sql = 'select * from t1 where id > %s'% 1 # 写的sql语句不需要封号结尾,如果需要给sql语句传参,需要通过

InnoDB-----第7章 事务

痞子三分冷 提交于 2020-02-08 01:34:43
第7章 事务 文章目录 第7章 事务 @[toc] 1. 认识事物 (1). 概述 (2). 分类 2. 事务的实现 (1). redo 1). 基本概念 2). log block 3). log group 4). 重做日志格式 5). LSN 6). 恢复 (2). undo 1). 基本概念 2). undo存储管理 3). undo log格式 (3). purge (4). MVCC (5). group commit ​ 事务是数据库区别与普通文件系统的重要特性之一. ​ 事务会把数据库从一种一致状态装换为另一种一致状态.在数据库提交工作时,要么确保所有修改都已经保存了,要么所有的修改都不保存. 1. 认识事物 (1). 概述 ​ 数据库的四大特性ACID: 原子性(atomicity):事务对外部不可分离,只有两种状态,成功或者失败. 一致性(conststency):把数据库从一种一致状态装换为另一种一致状态,前后完整性不被破坏(事务内动作符合要求,否则回滚) 隔离性(isolation):两个事物之间按照隔离级别有不同程度的不可见 持久性(durability):一旦提交,事务中对数据的修改永久保存 ​ MySQL事务:实时更新缓冲区中的数据,事务提交时(或者不定时),会刷新到到磁盘持久化.如果发生宕机会使用redo日志从checkpoint

MySQL数据库集群实战(4)——MySQL主从复制之全同步复制(单主模式和多主模式)

好久不见. 提交于 2020-02-08 00:23:12
文章目录 一、mysql全同步复制(组复制) 1、理解组复制工作原理 2、搭建mysql全同步复制多主模式 实验环境 实验 3、多主模式切换成单主模式 4、单主模式切换成多主模式 一、mysql全同步复制(组复制) 1、理解组复制工作原理 MySQL组复制是一个MySQL插件,它基于常规的MySQL复制,利用了基于行格式的二进制日志和GTID等特性。 MySQL组复制是MySQL 5.7.17开始引入的新功能,为主从复制实现高可用功能。它支持单主模型和多主模型两种工作方式 (默认是单主模型) 。 单主模型:从复制组中众多个MySQL节点中自动选举一个master节点,只有master节点可以写,其他节点自动设置为read only。当master节点故障时,会自动选举一个新的master节点,选举成功后,它将设置为可写,其他slave将指向这个新的master。 多主模型:复制组中的任何一个节点都可以写,因此没有master和slave的概念,只要突然故障的节点数量不太多,这个多主模型就能继续可用。 组由多个服务器构成,通过传递消息进行交互,通信层保证原子消息传递。MGR构建于此通信层抽象之上,并实现了多主更新复制协议。组中的每个服务器独立地执行事务,但是所有读写事务只有在得到组的批准后才会提交。只读事务在组内不需要协调,因此立即提交。对于任何读写事务

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)。 一致性:一致性指的就是强一致性。 可用性:系统提供的服务一直处于可用状态

应用服务和领域模型的边界在哪里?

爱⌒轻易说出口 提交于 2020-02-07 18:39:11
应用服务和领域模型的边界在哪里? 处理边界往往是一个比较棘手的问题。就像处理三八线一样,有的时候你会感觉对方的地盘属于你的,对方又感觉你的地盘属于他,然后要求重新重新划分。边界往往就是这样,经常出现冲突。 应用服务和领域模型的边界就没有像两个思想作怪那么复杂,因为他们具有规则和逻辑。所以只要弄懂什么是服务,什么是领域模型就可以解决这看似混乱的边界。 应用服务与领域模型的产生 应用服务和领域模型的出现是软件开发历史进程中的产物。在最开始的领域逻辑是混沌的,并没有领域模型,只是简单的事务脚本。在这个时期,一个脚本就对应一个业务用例。对于简单的业务来说这没什么问题,而且还很方便。但是当事务脚本中操作的模型对象超过两个以上,这时事务脚本就变得复杂起来,他完成了这些模型对象所有的业务逻辑。在这个时期事务脚本担任着全部的业务逻辑。随着业务复杂性的增加,人们解决问题域的抽象也变得更加接近现实。此时非过程化的面向对象编程也逐渐流行起来,所以也是时候将事务脚本的业务逻辑交给领域模型来解决了。从此事务脚本被一分为二,领域模型反应了细粒度业务逻辑,但是细粒度的领域模型在使用的过程又比较麻烦且繁琐,我们的业务流程常以粗粒度的用例模型来表达,所以我们需要一组类将细粒度的领域模型封装成粗粒度的用例模型供客户调用,这组封装的用例模型类叫做应用服务类。 应用服务包含什么内容? 上面是从业务的角度分析应用服务的产生

数据库事务的四大特性以及隔离级别

此生再无相见时 提交于 2020-02-07 15:51:54
本篇文章主要介绍数据库事务的四大特性ACID,以及数据库的隔离级别。 事务 概念 事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit提交一个事务,也可以使用 Rollback 进行回滚。 四大特性 原子性(Atomicity):事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。 一致性(Consistency):事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 隔离性(Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的。 持久性(Durability):一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。 在了解完数据库的四大特性之后,我们来讨论一下数据库的隔离级别的问题。在此之前,我们考虑在没有数据库隔离性的情况下,多用户并发操作可能会发生的问题。 并发一致性问题 在并发环境下,一个事务如果受到另一个事务的影响,那么事务操作就无法满足一致性条件。 丢失修改:多个事务同时读取某一数据,一个事务成功处理好了数据,被另一个事务写回原值,造成第一个事务更新丢失。例如,T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 脏读