数据库事务

四级数据库

流过昼夜 提交于 2020-01-13 08:22:00
一、 1.关系模型中数据的逻辑结构是一张二维表。 2.关系演算比关系代数具有更强的表达能力。 3.DBMS不可以直接处理基于非结构化复杂对象的值的选择条件及其他操作。 4.模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,即模式实际上是数据库数据的逻辑视图,逻辑模式的基础是数据模型。 5.SQL语言提供预定义的数据类型,除此之外,用户可以自行定义自己专用的数据类型。 6.数据仓库特点:面向主题的、数据是集成的、数据是相对稳定对的、数据是反映历史变化的。 二、 1.动态SQL语句的执行方式包括:立即执行方式和先准备后执行方式。 2.Armstrong公里的基本推理规则:自反律、增广律、传递率。 3.系统发生错误,进入一种不良状态(例如死锁),导致事务无法正常执行,但该事务可以在以后的某个时间重新执行。这种故障属于事务故障。 4.NOSQL数据库便于大量数据的写入处理、对简单查询可以快速返回结果、可方便处理表模式的变更,很多NOSQL系统不支持JOIN(连接)操作,Join操作需要再应用程序中实现。 5.逻辑数据模型有:层次模型、网状模型、关系模型、面向对象模型和对象关系模型。 6.SQL预定义数据类型包括:数值型、字符串型、位串型、时间型和布尔型。 7.记录的聚簇存放是指将不同类型的记录存放到相同的物理区域。 8.索引是数据库中一种非常重要的数据存取路径。 9

SqlServer事务语法及使用方法

寵の児 提交于 2020-01-13 07:07:50
事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。 为了理解事务的概念,需要能够定义非常明确的边界。事务要有非常明确的开始和结束点。SqlServer中的每一条select、insert、update、delete语句都是隐式事务的一部分。 即使只发出一条语句,也会把这条语句当做一个事务-或执行语句的所有内容或什么都不执行。但是如果需要的不只是一条,而是多条语句呢?在这种情况下,就需要有一种方法来标记事务的开始和结束,以及事务的成功或失败。 可以使用一些T-SQL语句在事务中“标记”这些点。 begin tran:设置起点(开始) commit tran:使事务成为数据库中永久的、不可逆转的一部分(提交) rollback tran:本质上说想要忘记它曾经发生过(回滚) save tran:创建一个特定标记,只允许部分回滚(标记) begin tran 事务的开始可能是事物过程中最容易理解的概念。它唯一的目的就是表示一个单元的开始。如果由于某种原因,不能或者不想提交事务,那么这就是所有数据库活动将要回滚的起点。也就是说,数据库会忽略这个起点之后的最终没有提交的所有语句。 语法如下: begin tran[ saction] [ <transaction name>|<

ADO.NET事务封装

£可爱£侵袭症+ 提交于 2020-01-12 21:59:54
在数据库工具类编写的过程中,对事务的处理操作想避免各个原子操作的事务对象赋值重复操作,想对外暴露的方法为如下形式 public bool ExecuteTransition(Action TransitionAction, out string ExceptionStr) 外部传入的数据库操作都使用委托统一打包,内部进行事务操作。我们首先需要明白的是,数据库事务操作在ADO.NET的编码中的体现是,DbConnection为同一个,DbCommand的Transaction为同一个。 ​ 首先我们需要识每一个数据库操作的上下文,是否在TransitionAction这个委托中,为了简单明了,在执行TransitionAction时开启一个Task,取得当前线程的ThreadID作为这个事务委托的唯一标识,并生成一个DbTransaction放入一个TransactionDic中,在SqlHelper执行类中执行SQL语句创建Connection时,取得当前的ThreadID去TransactionDic中查找,如果有对应的Transition则说明该SQL语句的执行是在一个事务中,Connection直接取Transition的数据库连接,并给DbCommand的Transition对象赋值 ​

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

∥☆過路亽.° 提交于 2020-01-12 14:52:33
1 丶 Nginx 怎么实现负载均衡 这个还是比较简单 1.轮询 这种是默认的策略,把每个请求按顺序逐一分配到不同的 server,如果 server 挂掉,能自动剔除。 2.最少连接 把请求分配到连接数最少的 server 3.权重 使用 weight 来指定 server 访问比率,weight 默认是 1。以下配置会是 server2 访问的比例是 server1 的两倍。 4.ip_hash 每个请求会按照访问 ip 的 hash 值分配,这样同一客户端连续的 Web 请求都会被分发到同一 server 进行处理,可以解决 session 的问题。如果 server 挂掉,能自动剔除。 ip_hash 可以和 weight 结合使用。 2 丶 Linux 常用的命令 这个就不多说了 3 丶微信小程序常用的组件 view 丶 text 丶 button 丶 navigator 丶 scroll-view...... 等等 4 丶 Nginx 怎么配置虚拟主机 恩 2333333 5 丶 TP5 和 Laravel 框架差异 恩 2333333 6 丶 TP5 和 Laravel 框架中的数据迁移 这个本社区就有文档的 7 丶 RBAC 模型的讲解 什么是 RBAC RBAC (基于角色的访问控制):英文名称 Rose base Access Controller

Spring MVC 事务配置

天涯浪子 提交于 2020-01-12 03:45:48
Spring MVC事务配置 要了解事务配置的所有方法,请看一下 《Spring事务配置的5种方法 》 本文介绍两种配置方法: 一、 XML,使用tx标签配置拦截器实现事务 一、 Annotation方式 以下所使用环境为Spring4.0.3、Hibernate4.3.5 一、 XML,使用tx标签配置拦截器实现事务 Entity类User.java,持久化类,对应数据库表user package com.lei.demo.entity; import javax.persistence.*; @Entity(name="users") public class Users { public Users(){ super(); } @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private Integer id; @Column(name="user_name",length=32) private String user_name; @Column(name="age") private Integer age; @Column(name="nice_name",length=32) private String nice_name; //属性实现...... } UserDAO

事务的四大特性ACID

独自空忆成欢 提交于 2020-01-12 03:27:20
1.原子性:原子表示不可分割,一个事务一般包含一组(即多个操作),我们将一个事务看做一个整体,一个事务执行之后的结果有两种,要么所有的操作都成功,要么所有得操作都失败。只要事务中有一个操作失败,那么视为整个事务执行失败。事务会回滚到执行之前的状态。 2.一致性:事务在执行的前后数据的整体是保持一致的,类似于物理上的能量守恒。例如:某银行A用户有1000元,B用户有500元A用户向B用户转账1000元,在把转账整个过程视为一个事务,分为两个步骤,A用户转出1000元,B用户收账1000元,在事务执行的前后总金额都是1500元。 3.隔离性:一个事务在执行的时候不能被其他事务所干扰(我在做完一件事之前你做的事不能对我做的事产生影响),即当一个事务在操作某一个数据的时候其他的事务不能对该事物进行操作,例如:在事务操作数据库的某个字段的时候,数据库会将该字段锁起来,等该事务全部完成之后,才能有其他的事务对该字段进行操作。 4.持久性:一个事务执行完毕之后,它对数据的影响就已经确定了,比如一个事务将数据库中的某个表中的某个字段的值进行了修改,那么它对这个字段的修改就是永久性的,如果没有其他的事务或者操作对该字段进行修改,那么这个值永远不变。 来源: CSDN 作者: YangJianzuiniubi 链接: https://blog.csdn.net/YangJianzuiniubi

MySQL基础

爱⌒轻易说出口 提交于 2020-01-12 02:57:28
1.MySQL的逻辑架构 2.并发控制 并发控制存在于MySQL的两个层面中:服务器层以及存储引擎层。 2.1 读写锁 共享锁(读锁)是共享的,或者说是相互不堵塞的。多个客户在同一时刻可以同时读取同一个资源而互不干扰。排他锁(写锁)是互斥的,也就是说一个写锁会阻塞其他的写锁和读锁。 2.2 锁粒度 一种提高共享资源并发性的方式是让锁定对象更有选择性。尽量只锁定需要修改的部分数据,而不是所有的资源。任何时候,在给定的资源上,锁定的数据越少,则系统的并发程度就越高。 常见的锁粒度包括 表锁 以及 行锁 。表锁会锁定整张表,行锁同理。行级锁只会在存储引擎层实现,而MySQL服务器层则没有实现。 当然,每一种MySQL存储引擎都可以实现自己的锁策略和锁粒度。将锁粒度固定在某个级别,可以为某些特定的应用场景提供更好的性能,但却会失去对另外一些应用场景的良好支持。好在MySQL支持多个存储引擎的架构,所以不需要单一的通用解决方案。 3.事务 事务就是一组原子性的SQL查询,或者说是一个独立的工作单元。 事务内的语句,要么全部执行,要么全部执行失败。 可以用 start transaction 语句开始一个事务,然后要么使用 commit 提交事务将修改的数据持久保留,要么使用 rollback 撤销所有的修改。 系统需要严格的ACID测试保证事务的概念性(原子性、一致性、隔离性以及持久性)

Spring 事务失效

回眸只為那壹抹淺笑 提交于 2020-01-12 01:46:17
   隔离级别   在 TransactionDefinition.java 接口中,定义了“ 四种 ”的隔离级别枚举: /** * 【Spring 独有】使用后端数据库默认的隔离级别 * * MySQL 默认采用的 REPEATABLE_READ隔离级别 * Oracle 默认采用的 READ_COMMITTED隔离级别 */ int ISOLATION_DEFAULT = -1; /** * 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读 */ int ISOLATION_READ_UNCOMMITTED = Connection.TRANSACTION_READ_UNCOMMITTED; /** * 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生 */ int ISOLATION_READ_COMMITTED = Connection.TRANSACTION_READ_COMMITTED; /** * 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。 */ int ISOLATION_REPEATABLE_READ = Connection.TRANSACTION_REPEATABLE_READ; /** * 最高的隔离级别

MySQL基础知识点大全

守給你的承諾、 提交于 2020-01-11 20:24:35
一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、DQL语言的学习 ★ 基础查询 ★ 条件查询 ★ 排序查询 ★ 常见函数 ★ 分组函数 ★ 分组查询 ★ 连接查询 ★ 子查询 √ 分页查询 ★ union联合查询 √ 六、DML语言的学习 ★ 插入语句 修改语句 删除语句 七、DDL语言的学习 库和表的管理 √ 常见数据类型介绍 √ 常见约束 √ 八、TCL语言的学习 事务和事务处理 九、视图的讲解 √ 十、变量 十一、存储过程和函数 十二、流程控制结构 数据库的好处 1.持久化数据到本地 2.可以实现结构化查询,方便管理 数据库相关概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL:结构化查询语言,用于和DBMS通信的语言 数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 4、表由列组成,我们也称为字段

spring事务失效场景

有些话、适合烂在心里 提交于 2020-01-11 17:30:29
spring事务失效场景 添加@Transactional后的方法,不会直接操作数据库,例如保存方法,在执行完保存语句后,数据库并没有出现该数据,只有方法结束之后,才会正式保存到数据库。 1 、首先使用如下代码 确认你的bean 是代理对象吗? 必须是Spring定义(通过XML或注解定义都可以)的Bean才接受事务。 直接new出来的对象添加事务是不起作用的。 可以通过以下方式判断是否是代理对象: AopUtils.isAopProxy(Object object) AopUtils.isCglibProxy(Object object) //cglib AopUtils.isJdkDynamicProxy(Object object) //jdk动态代理; 2 、如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB; 3 、@Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错,事务也会失效。这一点由Spring的AOP特性决定的; 4 、如果你使用了springmvc,可能是context:component-scan重复扫描引起的; 5