1. Java 业务系统和 MySQL 的交互
Java 业务系统和 MySQL 的交互概览
1.1. MySQL 驱动有啥用
要在 Java 系统访问 MySQL ,得加个 MySQL 驱动依赖,才能和 MySQL 建立连接,然后执行 CRUD ,这段 maven 配置中就引入了一个 MySQL 驱动。mysql-connector-java 就是 Java 语言使用的 MySQL 驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
访问 MySQL ,就得和 MySQL 建立网络连接,而这就由 MySQL 驱动负责,他会在底层和 MySQL 服务器建立网络连接,有了这个连接,才能发送请求给 MySQL 服务器
和 MySQL 服务器有了网络连接后,Java 业务代码就能基于此连接,执行 CRUD 语句了
1.2. 数据库连接池有啥用
常用的数据库连接池有:c3p0, dbcp, druid, HikariCP
一个 Java 系统只会和 MySQL 建立一个连接吗?肯定不止的,用 Java 开发的 Web 系统部署在 Tomcat 中,而 Tomcat 本身就有多个线程并发处理接收到的大量请求
若 Tomcat 中的多个线程并发处理多个请求时,都去抢夺一个连接访问 MySQL ,那效率肯定很低
若 Tomcat 中的上百个线程,每个线程在每次访问 MySQL 时,都基于 MySQL 驱动去创建一个数据库连接,然后执行 SQL 语句,然后执行完后再销毁该连接。这样并发频繁创建数据库连接,又频繁销毁数据库连接的操作可不好,因为每次建立一个数据库连接都很耗时,好不容易建好连接,执行完 SQL ,还把它给销毁,下次又得重新建立数据库连接,效率肯定低下
所以得使用一个数据库连接池:在一个池子里维护多个数据库连接,让多个线程使用池中不同数据库连接去执行 SQL ,执行完 SQL 后,不是销毁数据库连接,而是将连接放回池,后续复用。数据库连接池的机制解决了:
- 多个线程并发使用多个数据库连接执行
SQL - 避免了数据库连接使用完之后就销毁
1.3. MySQL 本身的连接池干嘛的
很多系统要与 MySQL 建立大量连接,那 MySQL 必然也得维护与系统之间的各个连接,所以 MySQL 架构体系中的第一个环节,就是连接池。
MySQL 本身的连接池就维护了与系统之间的多个数据库连接
|