IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java-JDBC【之】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况 -> 正文阅读

[大数据]Java-JDBC【之】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况

1.数据库连接池

  • 普通JDBC数据库连接
    • 使用 DriverManager 来获取
    • 每次向数据库建立连接的时候都要将 Connection 加载到内存中,验证用户名和密码(得花费0.05s~1s的时间),执行完成后再断开连接。
    • 这样的方式将会消耗大量的资源和时间。若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。
  • 数据库连接池技术
    • 为解决传统开发中的数据库连接问题
    • 为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
    • 重复使用现有的数据库连接,而不是重新建立,避免频繁创建,释放连接,降低性能开销。
    • 对于异常和超时的连接,可以直接回收,提高系统稳定性
  • JDBC 的数据库连接池使用 javax.sql.DataSource
    • DataSource 只是一个接口,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供实现
    • DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池
    • DataSource用来取代DriverManager来获取Connection
    • 数据源和数据库连接不同,数据源可以有一个也可以有多个,多数情况下,一个数据库对应一个数据源
    • connection.close() 仅仅把数据库连接释放,归还给了数据库连接池。并不是关闭数据源

2.Durid介绍(官方文档)

  • Github 项目地址 https://github.com/alibaba/druid
  • 什么是Druid连接池
    在这里插入图片描述
  • 稳定性特性
    在这里插入图片描述
  • 为监控而生
    在这里插入图片描述
    在这里插入图片描述
  • 其他
    在这里插入图片描述

3.编码,问题,常规并发操作

3.1.JDBCUtil.class

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.多线程模拟并发

  • Task.class
    在这里插入图片描述

3.3.测试类

在这里插入图片描述
在这里插入图片描述

3.4.结果(并发 1千、2千、3千、5千),报错信息

/**
 * 场景
 * 不使用连接池,模拟 5千、3千、2千
 * 每次操作创建新的连接,使用后关闭连接
 * <p>
 * 环境:
 * 使用数据库连接池
 * 服务器:8C 16G 512固态磁盘
 * max_connections=100000 #MySQL允许最大连接数 1万
 * <p>
 * 结果:
 * 最大1万,并发5千,成功插入 报错
 * 最大1万,并发3千,全部成功,耗时:9秒
 * 最大1万,并发2千,全部成功,耗时:8秒
 * 最大1万,并发1千,全部成功,耗时:4秒
 * <p>
 */
  • 报错信息
  • The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  • Caused by: java.net.SocketException: 你的主机中的软件中止了一个已建立的连接。

在这里插入图片描述

4.编码,解决,使用Durid连接池

4.1.JDBCUtil.class

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.多线程模拟并发

在这里插入图片描述

4.3.测试类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.结果((20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况)

 * 场景
 * *使用数据库连接池,模拟10万并发
 * <p>
 * 环境:
 * 使用数据库连接池
 * 服务器:8C 16G 512固态磁盘
 * max_connections=100000 #MySQL允许最大连接数 1万
 * <p>
 * 结果:
 * 连接数20,并发1万,总插入10万条记录,全部成功,耗时:30秒,CPU46%,磁盘40%
 * 连接数50,并发1万,总插入10万条记录,全部成功,耗时:16秒,CPU65%,磁盘43%
 * 连接数100,并发1万,总插入10万条记录,全部成功,耗时:10秒,CPU100%,磁盘38%
 * 连接数200,并发1万,总插入10万条记录,全部成功,耗时:11秒,CPU100%,磁盘40%

在这里插入图片描述

5.完整源码

《目录:Java-JDBC学习》

《幕》

  • 留白 —<老吉>
  • ~ 今 ~ ? ~ ?????????? ?????????? ???????
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:15:14  更:2022-05-07 11:17:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:51:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码