首页 > 数据库 >数据库连接池到底应该设多大?

数据库连接池到底应该设多大?

时间:2023-10-04 20:14:57浏览次数:30  
标签:设多大 数据库 毫秒 线程 等待 连接池

数据库连接池到底应该设多大?

对Oracle数据库进行了压力测试,使用9600个并发线程执行数据库操作。连接池大小为2048时,每个请求要在连接池队列中等待33毫秒,并且获得连接后执行SQL需要77毫秒。此时,数据库的等待事件中出现了各种bufferbusywaits,数据库CPU占用率约为95%。接着,连接池大小减少到1024,性能数据发生了变化。连接池大小减半之后,吞吐量保持不变,但等待事件减少了一半。最后,将数据库连接池大小减少到96,仍然保持并发线程数为9600不变。结果显示,连接池平均等待时间只有1毫秒,执行SQL平均耗时为2毫秒。等待事件几乎消失,吞吐量上升。只是通过缩小中间件层的数据库连接池响应时间从100毫秒缩短到了3毫秒,而且没有进行其他任何调整。

这个结果让我们对数据库连接池的大小设定有了新的认识:我们并不需要一个大连接池来应对高并发的访问量,相反,我们需要的是一个小连接池连接池中的连接数量应该等于数据库能够同时进行有效的查询任务数量,通常不会超过2倍的CPU核心数。除此之外,我们还需要让剩下的业务线程在队列中等待。

标签:设多大,数据库,毫秒,线程,等待,连接池
From: https://www.cnblogs.com/hnxxcxg/p/17742659.html

相关文章

  • 简单的商城系统的数据库设计
    简单的商城系统的数据库设计本文会详细介绍一下,简单商城系统的数据库的表的创建。本文使用的数据库是MySQL8.0.x。数据库可视化软件使用的是jetbrainsdatgrip。用户相关账号表createtableaccount(idint8auto_incrementprimarykeycomment'主键',usernam......
  • MySQL数据库多表关联查询
    本文列举数据库的多表关联查询及实际使用,以员工表和部门表作为举例:部门表:dept点击查看创建部门表sqlcreate table `dept`  (  `deptno` int(2) not null,  `dname` varchar(14),  `loc` varchar(13),  primary key (`deptno`));员工表:emp点击查看创建......
  • 查看SQL Server数据库版本
    在SSMS里新建查询输入以下语句print'服务器名称:'+@@SERVERNAMEprint'SQLServer的版本'+@@VERSIONselect@@SERVERNAMEas'服务器名称'select@@VERSIONas'SQLServer的版本'执行可得或者在ssms上点击帮助——》关于即可得 ......
  • Navicat如何连接修改默认端口后的SQLServer数据库
    一般情况SQLServer默认端口是1433,Navicat连接时只需要输入服务器ip以及用户名和密码就可以登录,这里ip大部分人都不会写出来,因为不写的话Navicat默认连接的是1433这个端口;      但是有些情况比如修改了SQLServer默认端口号或者连接做了端口映射的SQLServer我们该怎么连......
  • 连接SQL Server数据库(详细步骤+登录注册案例)
    数据库入门~连接数据库(详细步骤+登录注册案例+简单界面)步骤一:SQLServer使用sqlserver身份验证登录,方便与编写的程序连接 <1>首先使用Windows登录进去,右键实例,点击属性,再选择安全性,将该选项卡中的服务器身份验证改为sqlserver和windows身份验证模式。点击确定 <2>此时重......
  • 1.数据库简介
    MySQL简介:JavaEE企业级Java开发,Web前端(HTML,CSS,JavaScript)后端连接数据库JDBC,连接前端,传输数据数据库(存数据,TxtExcel,world)代码,数据库(增删改查)混饭吃操作系统,数据结构,算法,优秀离散数学,数字电路,体系结构,编译原理,实战=无敌MySQL是一个关系型数据库管理系统前世:瑞典MysqlAB公......
  • 数据库中的AUTO_INCREMENT
    在SQL中,AUTO_INCREMENT是一个用于自动生成递增唯一值的特殊属性或关键字。它通常用于定义表中的主键列,以确保每个新插入的记录都具有唯一的标识符。1.AUTO_INCREMENT的定义:MySQL:在创建表时,可以将AUTO_INCREMENT关键字应用于整数列,以指示该列是自动递增的主键列。例如:idINTAU......
  • 达梦数据库使用内存监控指导
    达梦数据库使用内存监控指导2.1如何判断内存池空闲还是紧张v$mem_pool可以查看所有内存池的使用信息。当前系统的内存池总大小可以通过以下语句查询,单位是M:selectname,--内存池名称is_shared,--是否是共享的is_overflow,--是否用到了备份池org_size/1024.0/1024.0,--......
  • Java JDBC连接数据库的CURD操作(JDK1.8 + MySQL8.0.33 + mysql-connector-java-8.0.27-
    JDBC概述JDBC(JavaDatabaseConnectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一......
  • MYSQL数据库基础
    目录1.数据库概念1.1数据库是干嘛的?1.2数据库和数据结构是啥关系?​1.3两种类型的数据库2.MySQL数据库2.1MySQL数据库概念2.2MySQL基本操作 2.2.1建立数据库 2.2.2查看数据库 2.2.3选中数据库 2.2.4删除数据库2.3MySQL数据类型1.数据库概念1.......