mysql事务

mysql-事务的使用

北慕城南 提交于 2019-12-15 00:23:45
mysql事务概念 如果一个包含多个步骤的业务操作, 被事务管理, 那么这些操作要么同时成功, 要不同时失败 事务操作 开启事务 start transition ; 回滚事务 rollback ; 提交事务 commit ; 事务提交 注意: mysql数据库中事务默认自动提交 事务提交的两种方式: 自动提交 mysql的事务自动提交 一条DML(增删改)语句会自动提交一次事务 手动提交 需要先开启事务,在提交 修改事务的默认提交方式 查看事务的默认提交方式 select @@autocommit ; 查询结果: 1代表自动提交 0代表手动提交 修改默认提交方式 set @@autocommit = 0 ; 事务的四大特征 原子性: 是不可分割的最小操作单位, 要么要么同时成功, 要么同时失败 持久性:当事务提交或回滚后,数据库会持久化的保存数据 隔离性:多个事务之间,相互独立 一致性: 事务操作前后,数据总量不变 来源: CSDN 作者: 仰望着那高处的巨人们 链接: https://blog.csdn.net/weixin_44737646/article/details/103543631

[Java复习] 分布式事务 Part 1

半腔热情 提交于 2019-12-14 20:30:33
1. CAP理论 C: Consistency 一致性 A: Availability 可用性 P: Partition tolerance 分区容错性 CAP定理:一个分布式系统不可能同时满足CAP三个要求,最多只能同时满足其中两项。 1.1. CA: 放弃分区容错性,所有数据放一个节点,退回单机模式。 1.2. CP: 放弃可用性,一旦网络故障,受影响服务需要等待恢复时间,系统处于不可用状态。 1.3. AP: 放弃一致性,这里指放弃强一致性,确保最终一致性。 大多数分布式系统的选择。 2. BASE理论 BASE: B ase A vailable(基本可用), S oft state(软状态), E ventually consistent(最终一致性)。 BASE是对CAP一致性和可用性权衡的结果。 1. 基本可用:指分布式系统出现不可预知故障时,允许损失部分可用性,响应时间合理延长,服务上适当降级。 2. 软状态: 允许分布式系统中的数据处于中间状态,允许各节点数据同步时存在延时。 3. 最终一致性:允许系统中所有数据副本,在经过一段时间同步后,最终能够达到一个一致的状态。不需要实时保证系统的数据一致性。 3. 两阶段提交 (2PC) 数据库支持2PC,又叫XA transactions。 MySQL从5.5版,Oracle从7版,SQL Server 2005开始支持

MySQL面试总结

浪尽此生 提交于 2019-12-14 20:29:18
MySQL面试总结 # MySQL的存储引擎 `MyISAM`(默认表类型):非事务的存储引擎,基于传统的`ISAM`(有索引的顺序访问方法)类型,是存储记录和文件的标准方法,不是事务安全,不支持外键,适用于频繁的查询。表锁,不会出现死锁,适合小数据和小并发。 - 为什么不会出死锁?(没有事务就不会继续持有锁) 答:因为`MyISAM`再查询的时候,会同时锁定这个`sql`里面所有用到的表(获取锁的顺序是一致的),不局限与一张表,再写锁又重叠时,就得等待。 **注意:【`MySQL5.5`之前默认的是`MyISAM`引擎了,5.5之后的版本默认都是`innodb`作为存储引擎】** `innodb`:支持事务安全的存储引擎,适用于插入和更新,支持外键,行锁,事务。适合大数据,大并发。特别是针对多个并发和`QPS`较高的情况。 - `QPS:`就是每秒查询率,`QPS`是对一个特定服务器再规定时间内能处理多少流量的衡量标准。 - `TPS:`就是每秒传输处理的事务个数。 - `innodb`的行锁模式:共享锁,排他锁,意向共享锁(表锁),意向排他锁(表锁),间隙锁。(注意:如果`sql`语句没有使用索引,`innodb`不能确定操作的行时,使用意向锁(表锁))。 - 死锁问题 - 什么是死锁? 死锁就是当俩个事务都需要获取对方持有的排他锁才能完成事务的时候,就导致了循环锁等待

面试必备的10道MySQL题

a 夏天 提交于 2019-12-14 07:23:55
MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起。下面我们先来了解一下什么是 MySQL事务,再给大家分享10道面试必备的MySQL题。 MySQL事务是数据处理的最小操作单元,是一组不可在分割的操作集合,这个操作单元里的一系列操作要么都成功,要么都失败。 1、MySQL主从复制的原理。 (1)、主库必须开启二进制日志 (2)、当有增删改的语句时,会记录到主库的binlog中 (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因) (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些? (1)、慢SQL语句过多 (2)、从库的硬件比主库差 (3)

Spring框架(AOP、JDBCTemplate、事务控制)

纵饮孤独 提交于 2019-12-14 05:52:26
银行转账案例分析 在更新转入账户和转出账户时,中间加上这句: 造成:虽然报错,但是数据库更新了部分数据 再来看看QueryRunner的配置: <!--配置QueryRunner--> <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype"> <!--注入数据源--> <constructor-arg name="ds" ref="dataSource"></constructor-arg> </bean> 可以看到,每一次与数据库进行交互,都会产生一个Runner. 一个函数里面所有的操作,都应该由一个Connection来操作: 解决方法:让业务层实现业务的回滚 定义Utils.ConnectionUtils.java,连接的工具类,用于从数据源中获取一个链接,并且实现和线程的绑定: public Connection getThreadConnection(){ //1、先从ThreadLocal上获取 Connection conn = tl.get(); //2、判断当前线程上是否有链接 if(conn == null){ //从数据源中获取一个链接,和线程绑定,存入ThreadLocal中 conn = datasource.getConnection();

MySQL面试题看这一篇就够了

a 夏天 提交于 2019-12-14 00:05:12
现在mysql相关的面试,面试官总会问一些相关的技术问题。在这里,因此就总结一些常见的mysql面试题,都是自己平时工作的总结以及经验。希望大家看完,能避开”面试坑”。 1、MySQL主从复制的原理。 (1)、主库必须开启二进制日志 (2)、当有增删改的语句时,会记录到主库的binlog中 (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因) (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些? (1)、慢SQL语句过多 (2)、从库的硬件比主库差 (3)、同一个主库下有过多的从库 (4)、网络延迟 (5)、表分区过多 (还有一些原因,欢迎补充) 4、MySQL常见存储引擎及各自特点。 (1)、InnoDB 支持事务、行级锁、支持外键约束,主要面向OLTP的应用

MySQL经典面试题

大兔子大兔子 提交于 2019-12-13 23:59:29
提到MySQL 相信很多人都不陌生,MySQL 作为目前最流行的关系型数据库管理系统,在很多的应聘中,都会频繁被面试官问及。于是就自己总结了一些在面试中,经常面试官被提及的一些问题,希望能带给更多人帮助。 接下来就跟着我的步伐来了解一下吧! 1、MySQL主从复制的原理。 (1)、主库必须开启二进制日志 (2)、当有增删改的语句时,会记录到主库的binlog中 (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因) (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些? (1)、慢SQL语句过多 (2)、从库的硬件比主库差 (3)、同一个主库下有过多的从库 (4)、网络延迟 (5)、表分区过多 (还有一些原因,欢迎补充) 4、MySQL常见存储引擎及各自特点。 (1)

MySQL索引优化+慢查询定位

a 夏天 提交于 2019-12-13 20:58:11
一、先谈谈事务 1. ACID特性 1.1 原子性 : 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 1.2 一致性 : 执行事务前后,数据库从一个一致性状态转换到另一个一致性状态。 1.3 隔离性 : 并发访问数据库时,一个用户的事物不被其他事务所干扰,各并发事务之间数据库是独立的; 1.4 持久性 : 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库 发生故障也不应该对其有任何影响。 2. 事务隔离级别 2.1 READ_UNCOMMITTED(未提交读) : 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读 2.2 READ_COMMITTED(提交读) : 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生 2.3 REPEATABLE_READ(可重复读) : 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。 2.4 SERIALIZABLE(串行) : 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。 Mysql 默认采用的

MySQL面试题看这一篇就够了

有些话、适合烂在心里 提交于 2019-12-13 16:43:24
现在mysql相关的面试,面试官总会问一些相关的技术问题。在这里,因此就总结一些常见的mysql面试题,都是自己平时工作的总结以及经验。希望大家看完,能避开”面试坑”。 1、MySQL主从复制的原理。 (1)、主库必须开启二进制日志 (2)、当有增删改的语句时,会记录到主库的binlog中 (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因) (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些? (1)、慢SQL语句过多 (2)、从库的硬件比主库差 (3)、同一个主库下有过多的从库 (4)、网络延迟 (5)、表分区过多 (还有一些原因,欢迎补充) 4、MySQL常见存储引擎及各自特点。 (1)、InnoDB 支持事务、行级锁、支持外键约束,主要面向OLTP的应用

MySQL经典面试题

霸气de小男生 提交于 2019-12-13 16:38:14
提到MySQL 相信很多人都不陌生,MySQL 作为目前最流行的关系型数据库管理系统,在很多的应聘中,都会频繁被面试官问及。于是就自己总结了一些在面试中,经常面试官被提及的一些问题,希望能带给更多人帮助。 接下来就跟着我的步伐来了解一下吧! 1、MySQL主从复制的原理。 (1)、主库必须开启二进制日志 (2)、当有增删改的语句时,会记录到主库的binlog中 (3)、主库通过IO线程把binlog里面的内容传给从库的relay binlog(中继日志)(这是msyql复制是异步复制的原因) (4)、从库的sql线程负责读取它的relay log里的信息并应用到数据库中 2、Seconds_Behind_Master的原理。 表示sql线程和io线程之间的时间差 具体的计算:从库服务器当前的时间戳与二进制日志中的事件的时间戳相对比得到的,所以只有在执行事件时才能报告延迟。 不足: 一些错误(例如主备的max_allowed_packet不匹配,或者网络不稳定)可能中断复制,由于主从复制是异步操作,Seconds_Behind_Master可能显示为0 3、主从延迟的主要原因有哪些? (1)、慢SQL语句过多 (2)、从库的硬件比主库差 (3)、同一个主库下有过多的从库 (4)、网络延迟 (5)、表分区过多 (还有一些原因,欢迎补充) 4、MySQL常见存储引擎及各自特点。 (1)