mysql事务

事务及事务隔离

时间秒杀一切 提交于 2019-12-08 15:57:33
一、事务的概念 :事务是由一条或者是多条对数据库操作的SQL语句组成的一个不可分割的单元,只有当事务中的所有的操作都正常成功执行时,整个事务才提交给数据库。 注意:1.事务是一组SQL语句的执行,要么全部执行成功,要么全部执行失败,不能出现部分成功和失败,以保证原子操作 。 2、事务中所有的数据执行成功,才能提交(commit)事务,把结果写入磁盘。 3、事务在执行过程中,有SQL出现了错误,事务必须回滚(rollback)到最初的状态。 二、事务的作用 事务管理对于企业级应用而言至关重要,它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。就像银行的自动提款机ATM,通常ATM都可以正常为客户服务,但是也难免遇到操作过程中及其突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过ATM机一样,以保证用户和银行的利益都不受损失。 三、 事务的ACID特征:(4个) 1、原子性(atomic) 事务是一个不可分割的整体,必须具有原子特性,即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换 2、一致性(consistency)

TX-LCN分布式事务使用方案

无人久伴 提交于 2019-12-08 14:35:40
Lcn分布式事务流程实现(启动事务协调者) 如果觉得还可以 记得关注一下公众号哦!一起交流学习! 一、lcn流程图实现 二、Lcn介绍 1. tx-lcn 1.正如官网所说的:LCN并不生产事务,LCN只是本地事务的协调工! Lcn本身不会产生事务,也不会涉及到某些业务代码!他对事务的操作本身就依赖一个事务协调者服务 如上图所说的一样 他分为4个步骤 服务发起者 在事务协调者内创建事务组,并将本事务加入事务组 事务参与者加入事务组,直到有结束标记出现 事务协调者向所有的事务参与者发送询问,是否能够提交!全部提交则事务组提交!有一个回滚标记则事务组回滚! 事务组执行操作之后,释放所有锁资源! 三、代码案例 1 创建数据库 tx-manager 创建表 CREATE TABLE ` t_tx_exception ` ( ` id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT , ` group_id ` varchar ( 64 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL , ` unit_id ` varchar ( 32 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL

Hibernate使用笔记整理

非 Y 不嫁゛ 提交于 2019-12-08 05:28:43
A. Hibernate执行环境配置 用到的包 antlr-2.7.6.jar 解释hibernate的查询语言,叫hibernate query Language,叫hql语句的 commons-collections-3.1.jar 是一些集合,一些公共的集合,apache 的 公共包, 主要是支持hibernate缓存的,hibernate有各种缓存,一级缓存,二级缓存,查询缓存 dom4j-1.6.1.jar 解析xml文件的 hibernate3.jar 核心包 javassist-3.11.0.GA.jar 生成一些动态代理的包 jta-1.1.jar java事物管理,事物分布式管理 log4j-1.2.17.jar slf4j-api-1.5.8.jar jpos的日志接口,jpos是自己的产品,一般用的并不多,用的几乎都是log4j,为什么hibernate用它?可能是gemkey被jpos收编了之后,换本家了总得用点自己的东西,3.5以下需要 slf4j-log4j12-1.5.8.jar slf4j-api的实现类,没有实现完的 类路径下的log4j.properties log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out

MySQL数据库 (下)

不羁岁月 提交于 2019-12-08 05:18:29
MySQL数据库 (下) MySQL高级应用 一、 MySQL联结表 : 预备知识: 1、关系表:把信息分解成多个表, 一类数据 一个表, 各表 通过某些 共同的值相互关联 (所以才称为 关系数据库 )。 2、联结:联结是一种机制,用来在一条SELECT语句中关联表,因此称为联结。通过联结,一条SELECT语句可以联结多个表返回一组输出。 3、完全限定列名: 表名+ . +列名 。 4、笛卡儿积(叉联积):由没有联结条件表关系返回的结果为笛卡儿积,结果的行数是第一个表的行数乘以第二个表的行数。 5、表别名和列别名(SQL 一个别名只存在于查询期间。表别名只会在查询执行中使用。与列别名不同,表别名不返回MySQL客户端):SELECT 列名 AS 列别名 FROM 表名 AS 表别名 (Oracle中没有AS,别名设置不用AS,直接指定别名即可)   一、 INNER JOIN(内连接/等值连接)--获取两个表中字段匹配关系的记录; mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author; mysql> SELECT a.runoob_id, a.runoob

事物隔离级别

时光怂恿深爱的人放手 提交于 2019-12-07 22:37:28
https://blog.csdn.net/qq_21359547/article/details/88824901 文章目录: 什么是事务 事务的ACID Mysql四种隔离级别 测试Mysql隔离级别 隔离级别原理分析 一、什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 二、事务的 ACID 事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。 原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 隔离性

事务隔离级别的学习

旧时模样 提交于 2019-12-07 17:41:34
写在前面: 这个博客记录的是自己学习过程和理解,有些细节可能写的不见得准确,想了解概念,谷歌可以搜出很多不错的博文去学习.我把它记下来,则是为了记录学习的过程,因为有些知识是需要自己创造实践的机会才能真正理解其中的细节. 先贴概念 由ANSI/ISO定义的SQL-92标准定义的四种隔离级别 读取未提交内容/脏读(READ UNCOMMITTED/Dirty Read):无效数据的读出 . SELECT语句是在无锁的模式下运行,一个事务可以读到另外一个事务的未提交的数据。 提交读(READ COMMITTED):一个事务不能读到另外一个事务未提交的数据。在这种隔离级别下,对于更新语句来说(SELECT FOR UPDATE,UPDATE和DELETE), Innodb只会对where条件中索引能覆盖到的行进行上锁 , 不会上gap锁和next key lock ,所以就 避免不了不可重复读和幻读 。 可重复读(REPEATABLE READ):是Innodb默认的隔离级别。它使用了 gap locks 或者 next-key locks 来 避免不可重复读的现象,但是仍然避免不了幻读 。如果SELECT FOR UPDATE,UPDATE以及DELETE的where条件能用到唯一索引,INNODB只会对唯一索引能覆盖到的行上行锁;否则就上gap locks或者Next-key

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

南笙酒味 提交于 2019-12-07 15:05: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 aop事务先后问题

一笑奈何 提交于 2019-12-07 11:47:23
Spring中的事务是通过aop来实现的,当我们自己写aop拦截的时候,会遇到跟spring的事务aop执行的先后顺序问题,比如说动态切换数据源的问题,如果事务在前,数据源切换在后,会导致数据源切换失效,所以就用到了Order(排序)这个关键字. 我们可以通过在@AspectJ的方法中实现org.springframework.core.Ordered 这个接口来定义order的顺序,order 的值越小,说明越先被执行。比如代码如下: /** * @author HuifengWang * aop面向切面编程 * */ @Component @Aspect public class AspectJ4DataBase implements Ordered{ //拦截所有的service操作 @Pointcut("execution( * com.hc.shop.*.service.*.*(..))") public void readMethod() { }// 匹配所有的读取操作 @Before("readMethod()") public void onlyReadPre(){ DataSourceContextHolder.setDataSourceType(DataSourceType.MYSQL); System.out.println("数据库切换MYSQL"); }

第一次有人把“分布式事务”讲的这么简单明了

谁都会走 提交于 2019-12-07 10:38:31
“ 不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。 又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。 有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。 简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。 数据库本地事务 ACID 说到数据库事务就不得不说,数据库事务中的四大特性 ACID: A:原子性(Atomicity), 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。 事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 就像你买东西要么交钱收货一起都执行,要么发不出货,就退钱。 C:一致性(Consistency), 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。 如果事务成功地完成

Mysql数据库调优

╄→гoц情女王★ 提交于 2019-12-07 01:55:05
1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL数据库必须进行必要的优化。 优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化。 2. 数据库设计和查询优化 在MySQL Server性能调优中,首先要考虑的就是Database Schema设计,这一点是非常重要的。一个糟糕的Schema设计即使在性能调优的MySQL Server上运行,也会表现出很差的性能;和Schema相似,查询语句的设计也会影响MySQL的性能,应该避免写出低效的SQL查询。这一节将详细讨论这两方面的优化。 2.1 Schema Design Schema的优化取决于将要运行什么样的query,不同的query会有不同的Schema优化方案。2.2节将介绍Query Design的优化。Schema设计同样受到预期数据集大小的影响。Schema设计时主要考虑:标准化,数据类型,索引。 2.1.1 标准化 标准化是在数据库中组织数据的过程。其中包括,根据设计规则创建表并在这些表间建立关系;通过取消冗余度与不一致相关性,该设计规则可以同时保护数据并提高数据的灵活性