当前位置: 首页 > article >正文

mysql 性能调优之连接配置优化


1.1、最大连接数
如果遇到error 1040: Too many connections的错误?可以通过增加可用连接数来解决;
修改环境变量max_connections,默认情况下服务端的最大连接数为151个mysql;

max_connections:设置MySQL服务器允许的最大连接数。应根据服务器硬件和网络连接数量进行调整。

show variables like 'max_connections';
 


1.2、数据库连接池大小
innodb_buffer_pool_size:这是InnoDB存储引擎最重要的参数之一,用于管理索引和数据文件缓存的主内存池。应将其设置为足够大以容纳所需的索引和表数据。

尽量减少和服务端建立连接的次数,不要每次执行个SQL语句都创建个新连接。

常见的数据库连接池有DBCP、C3P0、阿里的Druid、Hikari,前两者用得很少了,后两者目前是比较主流的。

连接池并不是越大越好,比如Druid的默认最大连接池大小是8,Hikari默认最大连接池大小是10,盲目地加大连接池的大小,系统执行效率反而有可能降低。

对于每一个连接,服务端会创建一个单独的线程去处理,连接数越多,服务端创建的线程自然也就越多。而线程数超过CPU个数的情况下,CPU势必要通过分配时间片的方式进行线程的上下文切换,频繁的上下文切换会造成很大的性能开销。

Hikari官方给出了一个PostgreSQL数据库连接池大小的建议值公式,CPU核心数*2+1。假设服务器的CPU核心数是4,把连接池设置成9就可以了。这种公式在一定程度上对其他数据库也是适用的,

数据库连接池大小的建议值公式=CPU核心数*2+1
1
1.3、连接超时时间
wait_timeout:设置连接的超时时间,当一个连接在指定时间内没有活动时,将被自动关闭。

及时释放不活动的连接,系统默认的客户端超时时间是28800秒(8小时),我们可以把这个值调小一点

show variables like 'wait_timeout';
1


1.4、查询缓存大小
query_cache_size:启用查询缓存可以提高查询性能,但对于更新频繁的数据库,启用查询缓存可能会降低性能。


http://www.kler.cn/a/515208.html

相关文章:

  • rocketmq基本架构
  • 解决leetcode第3418题机器人可以获得的最大金币数
  • Redis的Windows版本安装以及可视化工具
  • 【云网】云网络基础概念(华为云)
  • 多线程杂谈:惊群现象、CAS、安全的单例
  • 产品经理面试题总结2025【其一】
  • 26岁备考PMP,经验分享
  • 支持selenium的chrome driver更新到132.0.6834.83
  • 嵌入式知识体系分析+数据结构概念+时间复杂度计算规则+顺序表的原理与实现
  • 论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(一)
  • DeepSeek-R1技术突破:基础模型强化学习+蒸馏小模型超越o1-mini
  • IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载
  • windows安装ES
  • MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
  • selenium获取登录token
  • Android系统开发(一):AOSP 架构全解析:开源拥抱安卓未来
  • postgresql15的停止
  • s/jwt-decode.js?v=534c014e‘ vue3引入jwt-decode报错
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • 群晖部署-Calibreweb
  • Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法
  • 新浪安卓(Android)开发面试题及参考答案(68道题,9道手撕题)
  • 人工智能学习(二)之Python 科学计算库
  • SSM开发(二) MyBatis两种SQL配置方式及其对比
  • 三篇物联网漏洞挖掘综述
  • 操作无法完成,因为文件已经在Electronic Team Virtual Serial Port Driver Service中打开