java 学习之路--mysql事务

本文详细介绍了数据库事务的概念,包括其ACID四大特性——原子性、一致性、隔离性和持久性。接着,讨论了事务的四个隔离级别,分别是读未提交、读已提交、可重复读和串行化读,以及它们各自可能引发的问题,如脏读、不可重复读和幻读。此外,还提到了如何在MySQL中开启和设置事务隔离级别。
摘要由CSDN通过智能技术生成

一。什么是事务?

mysql事务就是一组sql语句操作,一个事务内的所有sql操作要么同时失败,要么同时成功

二。事务的特点:

ACID:

A指的是原子性:事务是最小的工作单位,不可再分

C指的是一致性:事务必须保证多条DML语句同时成功或者同时失败

I指的是隔离性:事务与事务之间有隔离级别

D指的是持久性:最终数据必须持久化到硬盘中,事务才算成功的结束

三。事务的隔离级别

事务有4个隔离级别:

读未提交(read uncommitted) 

读已提交(read committed)

可重复读(repeatable read)

串行化读或叫序列化读(serializable read)

为什么要设置隔离级别呢?

因为不设置事务隔离级别会存在一些问题:

假如我开启了两个事务,事务A和事务B

1.读未提交:意思是对方事务为提交,我们当前事务也可以读取到对方提交的数据

存在问题:脏读问题,就是由于对方事务为提交,可能回滚,这样读到的未提交的数据不会持久化到硬盘中,读的就是假的数据

2.为了解决脏读问题,出现了第二级别:读已提交:

意思是只能读到对方事务提交的数据

存在的问题:不可重复读,就是我们当前事务从开启到结束之间,读取到的数据不一致

3.为了解决不可重复读,出现了第三级别:可重复读

隔离的级别更厚,即使对方事务提交了,也读不到,即只要我们当前事务没有接受,读取到的数据都是一样的

存在的问题:幻读:就是对方事务提交了,数据已经持久化到了硬盘当中,但是我们却读不到,即我们读取的数据时假象

使用start transaction开启事务,关闭了制动提交机制

使用set global transaction isolation level 隔离级别

使用select @@global transaction_isolation 查看事务的隔离级别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mysql-connector-javamysql-connector-j是同一个MySQL官方提供的JDBC驱动程序,它用于连接MySQL数据库和Java应用程序。mysql-connector-javaMySQL Connector/J的完整名称,其“J”表示Java,是指这是一个Java驱动程序。而mysql-connector-j则是mysql-connector-java的简写,两者是同一个东西,只是名称不同。 ### 回答2: mysql-connector-javamysql-connector-j都是用于连接Java应用程序和MySQL数据库的驱动程序。它们之间的主要区别可以从以下几个方面来看。 1. 命名方式:mysql-connector-java是根据JDBC(Java数据库连接)的命名方式来命名的,而mysql-connector-j是MySQL Connector/J的缩写命名方式。 2. 版本历史:mysql-connector-javaMySQL官方发布的Java驱动程序,它的版本号与MySQL数据库的版本号是对应的。而mysql-connector-j是在mysql-connector-java的基础上进行二次开发和维护的版本。 3. 社区贡献:mysql-connector-javaMySQL官方维护,更新频率较稳定,并提供了常见的功能和支持。而mysql-connector-j则是由独立的开发者或第三方贡献者维护,更新可能相对较少。 4. 功能支持:由于mysql-connector-javaMySQL官方的驱动程序,它相对完整地支持了MySQL数据库的各种功能,如事务处理、存储过程等。而mysql-connector-j则可能只支持部分数据库功能,具体取决于开发者对其进行的二次开发。 总体来说,mysql-connector-java是更常用和可靠的MySQL数据库驱动程序,由MySQL官方提供支持和维护。而mysql-connector-j则可能是由第三方进行了一些个性化的开发和定制,可能用于特定的应用场景。选择使用哪个驱动程序取决于具体的需求和项目要求。 ### 回答3: mysql-connector-javamysql-connector-j其实是指的同一个东西,都是用于Java程序连接MySQL数据库的驱动程序。mysql-connector-java是该驱动程序的官方名称,而mysql-connector-j则是该驱动程序的简称。 mysql-connector-javaJava语言开发的,它提供了一个API,使得Java程序可以直接连接和操作MySQL数据库。通过mysql-connector-javaJava程序可以执行数据的增删改查操作,执行SQL语句,以及连接和断开数据库等。 mysql-connector-j是mysql-connector-java的缩写形式,常用于命令行或脚本的写作。在一些场景,为了方便输入或提高效率,人们更倾向于使用mysql-connector-j这个简称。 总结来说,mysql-connector-javamysql-connector-j在功能和使用上并没有实质的差别,只是一个是官方名称,一个是简称。无论是使用mysql-connector-java还是mysql-connector-j,都是为了实现Java程序与MySQL数据库的连接和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值