MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字

一、💛并发基本概念

 

并发的基本意思:

什么是并发呢?简单的理解就是同一时间执行

服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。

如果提交两个事务,改不同的表还没啥影响,假如要改相同的表,这时候可能会出现麻烦。

二、💙 脏读

由并发产生的第一个问题——脏读,什么是脏读呢?就是有脏数据(就是临时的数据,不是最终数据)就比如说我改完代码,还没有提交数据库,你正在读,这样你读的数据和我改的数据有偏差,也就是你读的都是错误的数据就叫脏读👴

那么我们如何解决脏读呢?🌸🌸🌸

我们要给写操作加锁,当事务A正在写的时候,事务B就不可以读取了,知道事务A写完为止,提交其他事务的事务B,才可以读取事务A

引入了写加锁,降低了两个事务的并发性,提高了隔离性。降低了效率,却提高了稳定性

三、 💜不可重复读

有并发产生的第二个问题——不可重复读,什么是不可重复读呢?

同一个读取数据的事务中,可能会涉及到多次读的操作,多次读的数据不同

比如:我在写代码,同学们正在看我写代码,他们看的时候我正在修改,然后我就继续修改完事,同学们是一直都在执行看我代码这一个事务,在第一眼看和后面看的数据结果不同。

那我们该怎么解决不可重复读呢?🐬 🐬 🐬

那就是给读操作加锁~(写操作加锁:是我写的时候别人不可以读。给读操作加锁是:别人在执行读的过程的时候,我可以再开一个事务去写,在第二个事务开始之前,其他读事务,读到的就是旧数据,第二个事务提交之后,别人再读就是新版数据了)

注意哈脏读和不可重复读肯容易混: 🍎 🍎 🍎

不可重复读是一个事务要多次读取,然后有个小傻子在啪啪的改,写完你第一次读和第二次读的数据不一样。

脏读是一个小帅哥在写完了,但是还没交,这时候一个小傻子过来读取数据,发现的读的数据全是错的数据,毕竟我还没交,交完才是正确的。

四、💚 幻读

我在写代码的时候已经加上了读加锁,写加锁的情况下

同学们正在看的事务,我没修改,我只是又增加了一些东西,(读着读着多个类啥的这种问题)

我们该如何解决幻读呢,办法只有一个了,就是串行化~彻底放弃并发性,执行事务,所有的事务都是一个挨着一个多串行执行(执行完一个事务,再去执行下一个事务)并发性最低的,隔离性是最高的,效率是最低的,数据也是最可靠的

MySQL提供了四种事务隔离级别

1.read uncommitted.  (存在脏读,不可重复读,幻读三种可能)隔离性最小,并发性最大,数据可靠性最低,效率最高

2.read committed(存在写加锁了)解决了脏读,其他两个还存在,隔离性上升,并发性下降,可靠性上升,效率下降

3.repeatable read(解决了脏读,不可重复读)给写,读加锁,存在幻读,隔离性上升,并发性下降,可靠性上升,效率下降

4.serializable :事务彻底串行执行,全解决了问题,隔离性最大,并发性最小,数据可靠性最高,效率最低


最终弹-完结篇最后一块

一、Java的JDBC编程🍭

通过java代码来操作数据库

实际开发中,我们大部分都是使用代码去操作数据库(但是代码也是要依赖SQL的)

一个成熟的数据库一般都会提供有一些API(Application Programming interface 应用程序编程接口(广义概念))

提到接口大家肯定会想起来这个interface接口(特指java语法中一个特殊的语法格式(狭义上的概念)java中的interface也是一种提供API的方式

成熟的数据库会提供一些API供你使用(API有一些类的方法)

每个数据库的API制作者是不同的人,设计出来的API当然也会相差很多,这样往往会提高学习成本(于是老大哥java站出来了),让他们遵守一套统一的API,让所有数据库按照一样的方式进行操作使用(只要掌握一套API,就可以操作各种数据库)

数据库厂商会提供对应的代码,这个代码就完成针对API的转换

API:写了一个程序,这个程序要给比尔提供哪些功能,这些功能往往是通过函数/类这样的方式提供的(如之前的Random,Scanner,ArrayList,String)

那么java如何使用JDBC操作MySQL呢

1.创建一个项目,正常java的创建操作

2.引入MySQL的驱动包作为项目依赖,把驱动包下载出来,导入到项目中

那我们该如何下载呢

方法一:Oracle的官网去下载(但是不是很好用)

方法二:github

方法三:中央仓库->圈子里面的功德活佛,把知名的知名的第三方库都收放到一起了,知道去中央仓库找    https://mvnrepository.com/(牛逼的佬) ♐️  ♐️  ♐️

搜索完mysql之后,选择第二个,点击那个头像图片

翻地下寻找对应的版本,大版本相同就行,5.1就可以

点击那个版本号5.19

选择下面图的jar包就行,下载完事

☀️🌤☀️🌤☀️🌤☀️🌤

💫💫💫下一步,点击这里面的Directory ,名字可以写lib,把jar包,复制,粘贴,粘贴到lib里面.

🌕🌕🌕

粘贴后,点击这个,然后点击OK就行。

🌗🌗🌗此时准备工作完成了,可以接下来写代码了

首先之前一直说Demo:例子, 以后找一些第三方库软件啥的可以用demo。

JDBC的流程(固定套路记住可以)

步骤一:创建数据源->数据库服务器是在哪里

你在之前自己建一个student(id name)的表


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
存储 关系型数据库 MySQL
MySQL MVCC全面解读:掌握并发控制的核心机制
【10月更文挑战第15天】 在数据库管理系统中,MySQL的InnoDB存储引擎采用了一种称为MVCC(Multi-Version Concurrency Control,多版本并发控制)的技术来处理事务的并发访问。MVCC不仅提高了数据库的并发性能,还保证了事务的隔离性。本文将深入探讨MySQL中的MVCC机制,为你在面试中遇到的相关问题提供全面的解答。
48 2
|
20天前
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
63 2
|
2天前
|
存储 SQL 关系型数据库
mysql 的ReLog和BinLog区别
MySQL中的重做日志(Redo Log)和二进制日志(Binary Log)是两种重要的日志系统。重做日志主要用于保证事务的持久性和原子性,通过记录数据页的物理修改信息来恢复未提交的事务更改。二进制日志则记录了数据库的所有逻辑变化操作,用于数据的复制、恢复和审计。两者在写入时机、存储方式、配置参数和使用范围上有所不同,共同确保了数据库的稳定性和可靠性。
|
7天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
22 3
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
16 2
|
9天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
46 2
|
11天前
|
存储 关系型数据库 MySQL
MySQL MVCC深度解析:掌握并发控制的艺术
【10月更文挑战第23天】 在数据库领域,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种重要的并发控制机制,它允许多个事务并发执行而不产生冲突。MySQL作为广泛使用的数据库系统,其InnoDB存储引擎就采用了MVCC来处理事务。本文将深入探讨MySQL中的MVCC机制,帮助你在面试中自信应对相关问题。
27 3
|
18天前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
23 1
|
17天前
|
监控 关系型数据库 MySQL
MySQL并发控制与管理
【10月更文挑战第17天】MySQL并发控制与管理
11 0