Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java业务系统是怎么和MySQL交互的?

Java业务系统是怎么和MySQL交互的?

作者头像
JavaEdge
发布于 2022-02-03 07:54:10
发布于 2022-02-03 07:54:10
1.1K0
举报
文章被收录于专栏:JavaEdgeJavaEdge

很多crud boy眼中的数据库

但使用MySQL时,总会遇到各种烦人问题,什么偶尔死锁、性能丢人、各种异常报错。一般人都会Google博客,尝试解决问题,最后虽然是解决了问题,但可能也没搞懂背后原理。

所以才需要精通MySQL底层原理,探索在解决MySQL各种问题时,如何凭借原理去快速分析、排查和解决问题。

MySQL驱动有啥用?

要在Java系统访问MySQL,得加个MySQL驱动依赖,才能和MySQL建立连接,然后执行CRUD:maven配置,这段maven配置中就引入了一个MySQL驱动。mysql-connector-java就是Java语言使用的MySQL驱动。

访问MySQL,就得和MySQL建立网络连接,而这就由MySQL驱动负责,他会在底层和MySQL建立网络连接,有此连接,才能发送请求给MySQL服务器

和MySQL有了网络连接后,Java业务代码就能基于此连接,执行CRUD语句了:

数据库连接池有啥用?

一个Java系统只会和MySQL建立一个连接吗?

肯定不止的,用Java开发的Web系统部署在Tomcat,Tomcat本身就有多个线程并发处理接收到的大量请求:

若Tomcat中的多个线程并发处理多个请求时,都去抢夺一个连接访问MySQL,那效率肯定很低:

若Tomcat中的上百个线程,每个线程在每次访问MySQL时,都基于MySQL驱动去创建一个数据库连接,然后执行SQL语句,然后执行完后再销毁该连接。这样并发频繁创建数据库连接,又频繁销毁数据库连接的操作可不好,因为每次建立一个数据库连接都很耗时,好不容易建好连接,执行完SQL,还把它给销毁,下次又得重新建立数据库连接,效率肯定低下:

所以得使用一个数据库连接池:在一个池子里维护多个数据库连接,让多个线程使用池中不同数据库连接去执行SQL,执行完SQL后,不是销毁数据库连接,而是将连接放回池,后续复用。

数据库连接池的机制解决了:

  • 多个线程并发使用多个数据库连接执行SQL
  • 避免了数据库连接使用完之后就销毁

MySQL本身的连接池干嘛的?

很多系统要与MySQL建立大量连接,那MySQL必然也得维护与系统之间的各个连接,所以MySQL架构体系中的第一个环节,就是连接池

MySQL本身的连接池就维护了与系统之间的多个数据库连接:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL原理简介—1.SQL的执行流程
如果Java系统要访问数据库,首先得与数据库建立一个网络连接。那么这个连接由谁来建立呢?其实就是由MySQL驱动来建立的,它会在底层与数据库建立网络连接。有了网络连接才能去发送请求给数据库服务器,如下图示:
东阳马生架构
2025/02/04
1310
头条二面: 详解一条 SQL 的执行过程|文末送书
天天和数据库打交道,一天能写上几十条 SQL 语句,但你知道我们的系统是如何和数据库交互的吗?MySQL 如何帮我们存储数据、又是如何帮我们管理事务?....是不是感觉真的除了写几个 「select * from dual」外基本脑子一片空白?这篇文章就将带你走进 MySQL 的世界,让你彻底了解系统到底是如何和 MySQL 交互的,MySQL 在接受到我们发送的 SQL 语句时又分别做了哪些事情。
kunge
2021/01/28
8470
头条二面: 详解一条 SQL 的执行过程|文末送书
jdbc是数据库连接池么_java的jdbc连接数据库
JDBC 是Java应用程序用来连接关系型数据库的标准API,为多种关系型数据库提供一个统一的访问接口。Sun公司一共定义4种 JDBC 驱动类型,一般使用第4种,该类型的Driver完全由Java代码实现,通过使用socket与数据库进行通信。
全栈程序员站长
2022/09/30
3.2K0
jdbc是数据库连接池么_java的jdbc连接数据库
字节三面:详解一条 SQL 的执行过程
天天和数据库打交道,一天能写上几十条 SQL 语句,但你知道我们的系统是如何和数据库交互的吗?MySQL 如何帮我们存储数据、又是如何帮我们管理事务?....是不是感觉真的除了写几个 「select * from dual」外基本脑子一片空白?金三银四读者福利:整理好的MySQL实战笔记,金三银四面试资料集锦。
Java程序猿
2021/02/23
3960
数据库连接(2) - 为什么C3P0连接池那么慢
在上一篇中我们介绍说客户端建立一次连接耗时太长(建立连接,设置字符集,autocommit等),如果在每个sql操作都需要经历建立连接,关闭连接。不仅应用程序响应慢,而且会产生很多临时对象,应用服务器GC压力大。另外数据库server端对连接也有限制,比如MySQL默认151个连接(实际环境中一般会调大这个值,尤其是多个服务时)
方丈的寺院
2019/08/05
1.1K0
数据库连接(2) - 为什么C3P0连接池那么慢
Mysql专栏 - mysql、innodb存储引擎、binlog的工作流程
这次新开了一个个人的mysql专栏,专门用于总结mysql的一些细节以及相关的案例总结,同时也包括了一些mysql的底层实现,在后续的篇章则是根据《mysql技术内幕innodb存储引擎》(第二版)来深入了解mysql中用的最多的存储引擎的内部细节。
阿东
2021/09/10
6170
一文彻底搞懂贾琏欲执事(JDBC)
    持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。就是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 而在 Java中,数据库存取技术只能通过 JDBC 来访问数据库。
上分如喝水
2021/08/16
6860
一文彻底搞懂贾琏欲执事(JDBC)
MySQL数据库:SQL语句的执行过程
我们的系统在和 MySQL 数据库进行通信前,需要先和数据库建立连接,而这个功能就是由MySQL驱动底层帮我们完成的,建立完连接之后,我们只需要发送 SQL 语句就可以执行 CRUD 了。如下图所示:
全栈程序员站长
2022/06/29
3.7K0
MySQL数据库:SQL语句的执行过程
JAVA 面试复习题
Tomcat8.0起已经默认nio模式,不需要做修改,BIO模式也已经抛弃了,今天主要介绍下tomcat的三种运行模式:BIO、NIO、ARP。
张哥编程
2024/12/13
1650
提升B2B业务系统吞吐量的解决方案之Java项目
在B2B业务领域,系统吞吐量是衡量一个系统性能好坏的重要指标。对于Java项目而言,提升系统吞吐量意味着在有限的硬件资源下,能够处理更多的业务请求,保证系统的稳定性和高效性。以下是一些详细且专业的解决方案,帮助提升Java项目的系统吞吐量。
小冷coding
2024/04/14
1980
提升B2B业务系统吞吐量的解决方案之Java项目
数据库连接池:从JDBC到高效管理的演进
从最初的JDBC手动连接数据库,到后来的ORM框架如iBATIS,再到数据库连接池如C3P0,技术的进步和互联网的发展速度是非常惊人的。现在层出不穷的各种中间件和脚手架,都是为了提高开发效率,降低开发难度,让开发者能够更专注于业务逻辑的实现。
不惑
2024/05/07
3530
数据库连接池:从JDBC到高效管理的演进
数据库连接池极简教程
一,常规数据库连接 常规数据库连接一般由以下六个步骤构成: 装载数据库驱动程序; 建立数据库连接; 创建数据库操作对象 访问数据库,执行sql语句; 处理返回结果集 断开数据库连接。 public
架构师小秘圈
2018/04/02
2K0
数据库连接池极简教程
数据库连接池为啥要用 ThreadLocal?
本人是在学threadlocal的时候,网上大部分人都是说数据库连接池是典型的用了threadloca的例子,然后我就又查数据库连接池和threadloca的关系。
Java技术栈
2021/06/16
7210
Java中数据库连接池
今天继续Java的课题,两天没有做任何事情,过了个自在的周末,但是不知道为什么总是有点淡淡的忧桑。
香菜聊游戏
2021/06/07
9490
Java中数据库连接池
数据库连接池学习笔记(一):原理介绍+常用连接池介绍
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
全栈程序员站长
2022/09/30
3.6K0
数据库连接池学习笔记(一):原理介绍+常用连接池介绍
🚀一文彻底弄懂 MySQL 优化:从 Java 后端视角出发!
这篇文章作者主要讲解 Java 中如何实现颜色的 RGB 转换。首先会介绍颜色的基本概念和 RGB 颜色模型,接着从代码层面展示如何在 RGB 和其他常见颜色表示形式(如十六进制颜色代码)之间进行转换,并通过实例展示实际应用。最后,分析不同方法的优缺点,提供核心代码的测试用例,帮助读者理解和应用...借此好文安利给大家。
bug菌
2024/11/25
1930
🚀一文彻底弄懂 MySQL 优化:从 Java 后端视角出发!
JavaWeb14-事务,连接池(Java正在的全栈开发)
事务&连接池 一.事务 1. 事务介绍 什么是事务 事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。这些单元要么全都成功,要么全都不成功。 事务
Java帮帮
2018/03/19
8880
JavaWeb14-事务,连接池(Java正在的全栈开发)
JDBC(三)数据库连接池(DBCP、C3P0)
前言   这段时间状态有一点浮躁,希望自己静下心来。还有特别多的东西还没有学懂。需要学习的东西非常的多,加油! 一、JDBC复习   Java Data Base Connectivity,java数据库连接,在需要存储一些数据,或者拿到一些数据的时候,就需要往数据库里存取数据。那么java如何连接数据库呢?需要哪些步骤? 1.1、注册驱动   1)什么是驱动      驱动就是JDBC实现类,通俗点讲,就是能够连接到数据库功能的东西就是驱动,由于市面上有很多数据库,Oracle、MySql等等,所以jav
用户1195962
2018/01/18
3.8K0
JDBC(三)数据库连接池(DBCP、C3P0)
走进JavaWeb技术世界3:JDBC的进化与连接池技术
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/10/20
6500
Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
前言 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化去写,本篇是一个开始。本文会介绍连接池技术并对比目前比较流行的java连接池技术,之后,会把druid整合到项目中来,将技术方案落地,实际整合到项目中,让技术能为我所用。 使用连接池的原因 jdbc的demo //第一步,注册驱动程序 //com.MySQL.jdbc.Driver Class.f
程序员十三
2018/03/15
8320
相关推荐
MySQL原理简介—1.SQL的执行流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档