Mysql-数据库优化-客户端连接参数
客户端参数
原文地址
# 连接池配置
# 初始化连接数
spring.datasource.druid.initial-size=1
# 最小空闲连接数,一般设置和initial-size一致
spring.datasource.druid.min-idle=1
# 最大活动连接数,一个数据库能够支撑最大的连接数是多少呢?
spring.datasource.druid.max-active=20
# 从连接池获取连接超时时间
spring.datasource.druid.max-wait=60000
# 配置间隔多久启动一次销毁线程,对连接池内的空闲的connection进行检测,单位是毫秒。
# 1.如果连接空闲并且超过minIdle以外的连接,如果空闲时间超过
minEvictableIdleTimeMillis设置的连接物理关闭。
# 2.在minIdle以内的不处理。
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置一个连接在池中连接最小可清理的空闲时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 打开后,增强timeBetweenEvictionRunsMillis的周期性连接检查,minIdle内的空闲连接
# 设置从连接池获取连接时是否检查连接有效性,true时,每次都检查;false时,不检查
spring.datasource.druid.test-on-borrow=false
# 设置往连接池归还连接时是否检查连接有效性,true时,每次都检查;false时,不检查
spring.datasource.druid.test-on-return=false
# 设置从连接池获取连接时是否检查连接有效性
# 为true时,如果连接空闲时间超过minEvictableIdleTimeMillis进行检查,否则不检查
# 为false时,不检查
spring.datasource.druid.test-while-idle=true
# 检验连接是否有效的查询语句
# 如果数据库Driver支持ping()方法,则优先使用ping()方法进行检查,否则使用
# validationQuery查询进行检查,用于检测sql语句是否可以正常执行
spring.datasource.druid.validation-query=select 1 from dual
# 每次检查强制验证连接有效性
spring.datasource.druid.keep-alive=true
数据库连接池化的思想也就是提前将连接创建好并保存用的时候直接拿来用,同时要进行管理,也就有了上面这些相关的参数,如果不适用池化的思想,数据库会有一个最大的连接数,如果超过这个最大连接数,数据库直接无法处客户端的查询请求。可以通过下面这个命令来查看:
SHOW VARIABLES LIKE 'max_connections';
我们可以看到默认值为151
那我们接下来做个实验:
可以看到一旦达到最大连接数就会报错,异常比例是相当高的,但是使用连接池就不会有这种大量报错的现象。
除了使用连接池,我们对一些参数也可以做一些优化:
spring.datasource.druid.initial-size=1
# 最小空闲连接数,一般设置和initial-size一致
spring.datasource.druid.min-idle=1
# 最大活动连接数
spring.datasource.druid.max-active=20
这个参数是管理连接池数量的,和线程池的思想一样,spring.datasource.druid.min-idle这个相当于核心线程数,无论怎样连接池始终保持这么多的连接数量。spring.datasource.druid.max-active=20这个是最大线程数,如果超过这个线程数会等待前面的处理完才能拿到连接。这个参数的值不是越大越好,真实业务可能需要压测得出一个合理值。
spring.datasource.druid.max-wait=60000
这个参数指定了一个连接等待的最大时间,如果超过这个时间可以直接失败,以免造成阻塞,越来越多的请求阻塞在服务端使得服务端压力更大,吞吐量进一步下降乃至发生宕机。
jdbc:mysql:/ip:3306/hero_all?serverTimezone=UTC&characterEncoding=utf-8&connectionTimeout=3000&socketTimeout=1200
- connectTimeout:表示等待和MySQL数据库建立socket链接的超时时间。如果与服务器(这里指数据库)请求建立连接的时间超过ConnectionTimeOut,就会抛连接超时异常,即服务器连接超时。
- socketTimeout:表示客户端和MySQL数据库建立socket后,读写socket时的等待的超时时间。如果与服务器连接成功,就开始数据传输了。如果服务器处理数据等待用时过长,超过了SocketTimeOut,就会抛出SocketTimeOutExceptin,即服务器响应超时,服务器没有在规定的时间内返回给客户端数据。
总结在客户端连接端,能做的优化也就是合理的配置连接池的参数,及优化等待时间
相关文章:

Mysql-数据库优化-客户端连接参数
客户端参数 原文地址 # 连接池配置 # 初始化连接数 spring.datasource.druid.initial-size1 # 最小空闲连接数,一般设置和initial-size一致 spring.datasource.druid.min-idle1 # 最大活动连接数,一个数据库能够支撑最大的连接数是多少呢? …...

【十二】【C++】vector用法的探究
vector类创建对象 /*vector类创建对象*/ #if 1 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <crtdbg.h>class Date {public:Date(int year 1900, int month 1, int …...
Docker 基本介绍
Docker 基本介绍 镜像 Docker镜像就是一个只读的模板。 例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其它应用 程序。 镜像可以用来创建Docker容器。Docker提供了一个很简单的机制来创建镜像或者更新现有的镜…...
CentOS 7 安装 install abiword
安装 1.下载noarch安装包 wget http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm 2.安装noarch rpm -Uvh lux-release-7-1.noarch.rpm 3.安装abiword yum -y install abiword...
开源的直播平台
直播平台系统界面介绍 开源一套直播平台 私信可获取源码...

ChatGPT 变懒最新解释!或和系统Prompt太长有关
大家好我是二狗。 ChatGPT变懒这件事又有了最新解释了。 这两天,推特用户Dylan Patel发文表示: 你想知道为什么 ChatGPT 和 6 个月前相比会如此糟糕吗? 那是因为ChatGPT系统Prompt是竟然包含1700 tokens,看看这个prompt里面有多…...

书生·浦语大模型第三课作业
基础作业: 复现课程知识库助手搭建过程 (截图) 进阶作业: 选择一个垂直领域,收集该领域的专业资料构建专业知识库,并搭建专业问答助手,并在 OpenXLab 上成功部署(截图,并提供应用地址&#x…...
【Redis笔记】分布式锁及4种常见实现方法
线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lock等。 进程锁 控制同…...

SpringMVC第一天
一、SpringMVC简介 1 SpringMVC概述 1.1 SpringMVC概述 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 2 入门案例【重点】 问题导入 在Controller中如何定义访问路径ÿ…...
如何利用腾讯工蜂提升广告推广和用户运营效率
无代码开发:腾讯工蜂的连接优势 在广告推广和用户运营中,腾讯工蜂的无代码开发优势让广告系统和用户运营系统能够轻松地实现无需API开发的集成。这使得没有专业编程技能的工作人员也能通过腾讯工蜂的用户友好界面,实现系统的快速连接和集成&…...
【QT+QGIS跨平台编译】之三十二:【MiniZip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、MiniZip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、MiniZip介绍 MiniZip是一个轻量级的开源库,用于创建、读取和操作ZIP文件格式的压缩文件。它提供了一组简单而灵活的API,可以方便地在应用程序中进行ZIP文件的压缩和解压操作。 MiniZip的主要特…...
OLAP技术的发展及趋势简述
这里写自定义目录标题 历史发展基于电子表格的数据分析基于传统数据库的数据分析基于大数据的数据分析 当下的现状OLAP技术的分类MOLAPROLAPHOLAP 主流的OLAP引擎新技术的普及内存向量计算列式数据存储及交换增量查询多源融合计算下推物化视图 发展趋势智能化分析多源融合和自动…...
stupid_brain
前言: 本文用于记录本人AI新手期间犯的各种错误,时常更新。 正文开始: 读取数据的num_worker设置过少,以至于训练速度卡在读取数据上。训练集数据处理:数据增强有利于解决过拟合问题。模型:relu少写、batc…...
C# BackgroundWorker的使用
C# 中的 BackgroundWorker 类是 .NET Framework 提供的一个组件,用于在后台线程上异步执行长时间运行的操作,同时保持与用户界面(UI)的交互,如更新进度信息或处理取消请求。这使得可以轻松地在不冻结UI的情况下执行耗时…...
(简单有案例)前端实现主题切换、动态换肤的两种简单方式
目录 背景 (强烈推荐)实现方法1:CSS中原生变量“--”和var() 步骤1:定义css变量 步骤2:使用CSS变量 步骤3:切换主题 实现完整案例 实现方法2:link 动态引入 背景 我们需要做一个功能&#…...

wyh的迷宫
涉及知识点:求迷宫能否到达终点的,而不是求路径数的,用bfs时可以不用重置状态数组(回溯)。 题目描述 给你一个n*m的迷宫,这个迷宫中有以下几个标识: s代表起点 t代表终点 x代表障碍物 .代…...

AWS云用户创建
问题 需要给工友创建AWS云的用户,这里假设使用分配给自己AWS开发者IAM账号,给别人创建aws IAM账号。 登录系统 打开页面:https://xxx.signin.aws.amazon.com/console,使用分配的开发者账号登录。如下图: 创建用户…...

微信小程序(三十七)选项点击高亮效果
注释很详细,直接上代码 上一篇 新增内容: 1.选择性渲染类 2.以数字为需渲染内容(数量) 源码: index.wxml <view class"Area"><!-- {{activeNumindex?Active:}}是选择性添加类名进行渲染 -->&l…...

通过Demo学WPF—数据绑定(二)
准备 今天学习的Demo是Data Binding中的Linq: 创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示: 查看这个Demo的效果: 开始学习这个Demo xaml部分 查看MainWindow.xaml: …...

数据湖的整体思路
湖本质上是一个集中化,中心化的,一体化的存储技术,并且在其之上追求技术架构的统一化,如流批一体,服务分析一体化。 当数据湖成为中心,那么就可以围湖而建“数据服务环”,环上的服务包括了数仓、…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...