mysql数据库事务

数据库事务?
逻辑工作单元:将系统中连续的变化放在一个逻辑单元里,可以全部执行,可可以全部不执行。

事务的回滚:

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,
要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,
否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功
要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,
必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

数据库为啥要开启事务?
1.如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,
它会自动完成,并且每条语句被当成一个事务;
   手动提交,在你显示提交之前的所有语句都被认为是一个事务,
它的好处是,当这个事务中的某一条语句失败时,事务会回滚,
也就是都不会写到数据库,这有利于于保持数据库的一致性。

2.默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句
代表一项事务,操作成功
后,系统自动调用commit()来提交,否则就是调用rollback()来撤销事务
使用JDBC事务界定时,可以将多个SQL语句结合到一个事务中,JDBC事务的一个
缺点是事务的范围局限在一个数据库连接,一个JDBC事务不能跨越多个数据库。

1、JDBC事务--------java.sql.Connection(JDBC接口)提供了两种事务模式,自动提交和手动提交,

/* 自动提交:在做记录更新时,系统会自动提交,不能保持事务的一致性,也就不能保证数据完整。
  手动提交:它则把事务处理将由你来完成,在发生异常时,可以进行事务回滚,保持事务的一致。
  下面讨论下在实践中的应用区别:
  1、在JDBC中,如果Connection类的方法setAutoCommit(boolean autoCommit)赋给值为false,那么就可以手动提交(调用Connection类的commit()方法);
  2、如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,他会自动完成,并且每条语句被当成一个事务;
  3、手动提交,在你显示提交之前的所有语句都被认为是一个事务,它的好处是,当这个事务中的某一条语句失败时,事务会回滚,也就是都不会写到数据库,这有利于于保持数据库的一致性。
  比如当你在主表和从表同时插入相关的数据时,如果从表(或主表)失败,而主表(或从表)成功时,那么,数据也不会被写入主表(或从表)中。

*/

// java.sqk.Connection提供了下面了下面几种控制事务的方法
public void setAutoCommit(boolean)

public boolean getAutoCommit()

public void commit()

public void rollback()

时间: 2024-10-29 11:20:59

mysql数据库事务的相关文章

MySQL数据库事务隔离级别(Transaction Isolation Level)

今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. 2 [mysqld] 3 transaction-isolation = R

mysql数据库事务详细剖析

在写之前交代一下背景吧! 做开发也好久了,没怎么整理过知识,现在剖析一下自己对数据库事务的认识,以前用sqlserver,现在转java后又用mysql.oracle.我这块就主要解释一下mysql数据库事务.其实好多内容适用于各种标准数据库! 直接就进入正文了! 不管是做啥都有理论知识,我在这块也介绍一下. 事务的特性 1.原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. 2.一致性(Consistency):在一个事务中,事务前后数

MySQL 数据库事务与复制

好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术. 为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式. 带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考实现来讲解. 以讲清原理为主要目的,对于具体实现的技术细节若无特别之处则尽可能点到即止.

[MySQL] 生产环境MySQL数据库事务一直在RUNNING

前言: 运营人员反映,有一单子提交卡住了,页面一直没有返回. 1,刚开始怀疑是应用服务器或者db压力过高hang住了,马上去check应用服务器以及db的负载,看起来都OK,蛮低的,应该不是DB性能问题. 2,最后去看下是否是表锁住了,查看到有2个事务一直RUNNING,没有结束., mysql> select * from INNODB_TRX\G;*************************** 1. row ***************************           

MYSQL数据库事务介绍

一.数据库事务介绍 简单地说,事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句, 执行时要么全成功要么全失败. 列如:小明给小红转账5块钱,流程如下: 1.从小明银行卡取出5元,计算式money-5 2.把上面5块钱打入小红的账号上,小红收到5块,money+5 上述转账的过程,对应的sql语句为: update  xiaoming_account set money=money-5 where name='xiaoming'; update  xiaohong_account

MySQL数据库事务各隔离级别加锁情况--read uncommitted篇(转)

本文转自https://m.imooc.com/article/details?article_id=17291,感谢作者 1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解. 2.数据库事务的隔离级别只是了解,并没有深刻理解,也没有在实际工作中体验使用过. 3.经常面试被人问起数据库加锁情况,一头雾水,很懵. 4.在网上找过很多博客,有的写得太多没耐心看,有的写得摘抄的定义,泛泛而谈,没有实操更没有讲解. 1.2 关于这篇分享对以上问题的解决 1.实践出真知,如果认真

MySQL数据库事务各隔离级别加锁情况--read committed &amp;&amp; MVCC(转)

本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解.这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 可以很负责人的跟大家说,MySQL 中的此隔离级别不单单是通过加锁实现的,实际上还有repeatable read 隔离级别,其实这两个隔离级别效果的实现还需要一个辅助,这个辅助就是MVCC-多版

MYSQL数据库事务4种隔离级别及7种传播行为

事务的特性: 原子性:事务的不可分割,组成事务的各个逻辑单元不可分割. 一致性:事务执行的前后,数据完整性保持一致. 隔离性:事务执行不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库中. 查看/设置隔离级别 查看:SELECT @@tx_isolation  设置:set tx_isolation='xxx' 事务的隔离级别 如果不考虑隔离性,引发一些安全问题 隔离性:一个事务的执行,不应该受到其他事务的干扰. 脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致

Mysql数据库事务详解

80年代中国人结婚四大件:手表.自行车.缝纫机.收音机(三转一响).要把事务娶回家需要四大件,所以事务很刻薄(ACID),四大件清单:原子性(Atom).一致性(Consistent).隔离性(Isolate).持久性(Durable).ACID就是数据库事务正确执行的四个基本要素的缩写. 原子性:要么不谈,要谈就要结婚! 对于其数据修改,要么全都执行,要么全都不执行.如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标.最典型的问题就是银行转帐问题. 一致性:恋爱时,什么方式爱我:结婚