mysql事务

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

Mysql中的锁机制详解

删除回忆录丶 提交于 2020-01-11 14:33:11
原文: MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁) 作者: 唐大麦 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。 Mysql用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。这些锁统称为悲观锁(Pessimistic Lock)。 MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁

数据库并发处理 - 上的一把好"锁"

久未见 提交于 2020-01-11 00:37:17
为什么要有锁? 我们都是知道,数据库中锁的设计是解决多用户同时访问共享资源时的并发问题。在访问共享资源时,锁定义了用户访问的规则。根据加锁的范围,MySQL 中的锁可大致分成全局锁,表级锁和行锁三类。在本篇文章中,会依次介绍三种类型的锁。在阅读本篇文章后,应该掌握如下的内容: 为什么要在备份时使用全局锁? 为什么推荐使用 InnoDB 作为引擎进行备份? 设置全局只读的方法 表级锁的两种类型 MDL 导致数据库挂掉的问题 如何利用两段锁协议减少锁冲突 如何解决死锁 对于热点表,如何避免死锁检测的损耗? 全局锁 什么是全局锁? 全局锁会让整个库处于只读状态,其他线程语句(DML,DDL,更新事务类)的语句都被会阻塞。 使用全局锁的场景 在做全库逻辑备份时,会把整库进行 select 然后保存成文本。 为什么要使用全局锁? 想象这样一个场景,要备份一个购买系统,其中购买操作设计到更新账号余额表和用户课程表。 现在进行逻辑备份,在备份过程中,一位用户购买了一门课程,这时需要在余额表扣掉余额,然后在购买的课程中加上一门课。正确的顺序肯定是先进行购买操作,减少余额和增加课程然后在进行备份。但却有可能出现这样的问题: 如果在时间顺序上先备份余额表 (u_account),然后用户购买(操作两张表),再备份用户课程表(u_course)? 这时用备份的数据做恢复时,会发现用户没花钱却买了一堂课

【巨杉数据库SequoiaDB】巨杉Tech | SequoiaDB 分布式事务实现原理简介

情到浓时终转凉″ 提交于 2020-01-10 17:40:21
1 分布式事务背景 随着分布式数据库技术的发展越来越成熟,业内对于分布式数据库的要求也由曾经只用满足解决海量数据的存储和读取这类边缘业务向核心交易业务转变。分布式数据库如果要满足核心账务类交易需求,则其需要完善分布式事务,向传统关系型数据库看齐。即分布式事务的实现也需要像传统关系型数据库的事务一样满足事务的标准要求及定义,即ACID特征。 分布式数据库的数据是进行多机器多节点分散存储的,这样的存储架构为实现分布式事务带来了极大的难度。数据事务操作时,事务操作会结合数据分布情况,到不同的存储位置上去执行,而这个存储位置位于网络中的不同机器的不同磁盘上。 2 事务基本概念 2.1 事务使用场景 银行应用是一个经典案例,可以解释事务应用的必要性。假设银行数据库有两张表,支票账户表(check)和存款账户表(save)。现在要从LiLei的支票账户里转账200元到她的存款账户,那么需要至少完成3步操作: 检查支票存款账户的余额是否大于200元; 从支票存款账户余额中减去200元; 在存款账户余额中增加200元; 所有的操作被打包在一个事务里执行,如果某一步失败,就回滚所有已完成步骤。事务操作一般用 START TRANSACTION 语句开始一个事务,用 COMMIT 语句提交整个事务,永久地修改数据,或者用 ROLLBACK 语句回滚整个事务,取消已做的修改。事务SQL操作样例如下:

mysql事务

China☆狼群 提交于 2020-01-10 17:37:51
事务的概念 事务是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起想系统提交或撤销操作请求, 即这一组数据库命令要么都执行,要么都不执行,事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时, 事务是最小的控制单元,事务适用于用户同时操作数据库系统的场景,如银行,保险公司 以及证券交易系统等,通过事务的整体以保证数据的一致性,事务是保证了一组操作的平稳性和可预测性的技术。 事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 原子性(Atomicity )   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency)   一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。   拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 隔离性(Isolation )   隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰

mysql系列(七)mysql 主从复制和mysql查询优化

为君一笑 提交于 2020-01-10 17:17:40
1. 什么是MySQL主从复制 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 2. mysql 的不同复制类型 2.1异步复制 MySQL复制默认是异步复制,Master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理;这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。 缺点:不能保证所有事务都被所有slave接收。 2.2 同步复制 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端,也就是说Master提交事务,直到事务在所有slave都已提交,才会返回客户端事务执行完毕信息; 缺点:需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 2.3 半同步复制( 半同步复制在5.5后才支持 ) 当Master上开启半同步复制功能时,至少有一个slave开启其功能。当Master向slave提交事务,且事务已写入relay-log中并刷新到磁盘上,slave才会告知Master已收到;若Master提交事务受到阻塞,出现等待超时,在一定时间内Master 没被告知已收到

hibernate基础(二)

爷,独闯天下 提交于 2020-01-10 13:47:04
1.hibernate中的实体规则   1)实体类创建的注意事项     1>持久化类提供无参数构造     2>成员变量私有,提供共有get/set方法访问。需提供属性。     3>持久化类中的属性,应尽量使用包装类型。     4>持久化类需要提供oid.与数据库中的主键列对应。     5>不要用final修饰class       ---hibernate使用cglib代理生成代理对象。代理对象是继承被代理对象。如果被final修饰。将无法生成代理。   2)主键类型     1>自然主键(少见)       ---表的业务列中,有某业务列符合,必须有,并且不重复的特征时,该列可以作为主键使用。     2>代理主键(常见)       ---表的业务列中,没有某业务列符合,必须有,并且不重复的特征时,创建一个没有业务意义的列作为主键。   3)主键生成策略     1>代理主键       ---identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.         a. sequence: Oracle中的主键生成策略.         b.increment(了解): 主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.         c.hilo(了解): 高低位算法.主键自增

Hibernate学习笔记_02

ぃ、小莉子 提交于 2020-01-10 13:46:53
上篇文章(传送门: Hibernate学习笔记_01 )介绍了Hibernate是什么,如何搭建,配置文件详解以及Hibernate的一些基本API详解这几个方面做了简单介绍,那么本文将会从一下5个方面记录Hibernate的学习经历: 1.hibernate中的实体规则 2.hibernate中的对象状态 3.hibernate进阶—— 一级缓存 4.hibernate中的事务 5.hibernate中的批量查询(概述) Ⅰ.Hibernate中的实体规则    在Hibernate使用中,需要创建与数据库表对应的实体,并在映射文件中配置.在创建实体的时候需要注意一些细节.   (1)实体类创建时需要注意5个事项:      1.持久化类提供无参数构造      2.成员变量私有,提供共有get/set方法访问.需提供属性      3.持久化类中的属性,应尽量使用包装类型      4.持久化类需要提供oid.与数据库中的主键列对应      5.不要用final修饰class(hibernate使用cglib代理生成代理对象.代理对象是继承被代理对象.如果被final修饰.将无法生成代理.)   (2)主键类型     自然主键(少见):表的业务列中,有某业务列符合,必须有,并且不重复的特征时,该列可以作为主键使用.     代理主键(常见):表的业务列中,没有某业务列符合

事务及ACID四大特性

点点圈 提交于 2020-01-10 11:28:56
事务及ACID四大特性 1. 事务 事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 1.1 概念 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 1.2 特性 事务是恢复和并发控制的基本单位。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 2. ACID特性 2.1 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。 2.2 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。 比如,当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统在运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。 如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。 2.3 隔离性