首页 > 数据库 >MySQL参数优化之thread_cache_size

MySQL参数优化之thread_cache_size

时间:2023-03-04 16:32:53浏览次数:42  
标签:thread cache Threads MySQL 线程 连接 size


1.thread_cache_size简介

每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,如果线程缓存中有空闲线程,这时候如果建立新连接,MYSQL就会很快的响应连接请求。

show status like  'Threads%';
show global status like 'Thread%';

可以看到

Threads_cached  68
Threads_connected 310
Threads_created 378
Threads_running 8
  • Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。
  • Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
  • Threads_created :代表从最近一次服务启动,已创建线程的数量。为处理连接请求创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值。
  • Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

2.线程缓存未命中率

线程缓存未命中率=Threads_created /Connections
=378/65660=0.005756929637526652=6%还算合理

show global status like 'Connections%';

3.thread_cache_size设置原则

如果是短连接,适当设置大一点,因为短连接往往需要不停创建,不停销毁,如果大一点,连接线程都处于取用状态,不需要重新创建和销毁,所以对性能肯定是比较大的提升。
对于长连接,不能保证连接的稳定性,所以设置这参数还是有一定必要,可能连接池的问题,会导致连接数据库的不稳定性,也会出现频繁的创建和销毁,但这个情况比较少,如果是长连接,可以设置成小一点,一般在50-100左右。

物理内存设置规则:通过比较Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。(–>表示要调整的值) 根据物理内存设置规则如下:
1G —> 8
2G —> 16
3G —> 32
>3G —> 64

查询thread_cache_size设置

show global status like'thread_cache_size';

设置命令:

mysql> set global thread_cache_size=16
编辑/etc/my.cnf 更改/添加 thread_concurrency = 16


标签:thread,cache,Threads,MySQL,线程,连接,size
From: https://blog.51cto.com/liuyunshengsir/6100362

相关文章

  • MySQL的InnoDB 三种行锁,SQL 语句加了哪些锁?
    InnoDB三种行锁:RecordLock(记录锁):锁住某一行记录GapLock(间隙锁):锁住一段左开右开的区间Next-keyLock(临键锁):锁住一段左开右闭的区间哪些语句上面会加行锁?(1)对于常见的......
  • Mysql 1290 - The MySQL server is running with the --secure-file-priv option
    问题场景执行导入数据报错执行语句如下:loaddatainfile'C:\Users\86183\Desktop\laodInFile.txt'INTOTABLEtest.test1;报错信息如下:1290-TheMySQLserverisrunnin......
  • Mysql 中二进制日志的初步认知
    二进制日志二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要的作用。开启二进制日志可以在​​my.cnf​​​文件或者​​my......
  • pymysql实现web多条件组合查询
       代码:importpymysqlfromrest_framework.viewsimportAPIViewfromrest_framework.responseimportResponse#Createyourviewshere.'''利用pymysql实现多......
  • docker下mysql容器数据的定时备份与恢复
    1、数据备份脚本vimmysqldump.sh#!/bin/bashdockerexec-i容器id/容器名mysqldump-uroot-proot-A>/mydata/mysqldump/mydb.sql-A表示备份所有数据库......
  • [mysql]状态检查常用SQL
    前言使用MySQL自身命令获取数据库服务状态。连接数--最大使用连接数showstatuslike'Max_used_connections';--系统配置的最大连接数showglobalvariableslike......
  • NET6 使用 Pomelo.EntityFrameworkCore.MySql,无法从“string”转化为Microsoft.Entity
    NET6使用Pomelo.EntityFrameworkCore.MySql,无法从“string”转化为Microsoft.EntityFrameworkCore.ServerVersion。关于net6使用了6.0版本Pomelo.EntityFrameworkCor......
  • mysql原理
    来自B站视频讲解的个人记录原视频mysql结构计算机语言通过驱动与mysql建立连接,然后发送sql指令,mysql执行。但是每一次执行都需要建立连接,完成后释放频繁的连接建立和......
  • MySQL常用DOS命令
    一、启动与关闭服务(1)启动服务netstartmysql(mysql是自己在安装mysql时起的服务名)(2)关闭服务netstopmysql2二、连接与退出数据库(1)连接数据库mysql-uroot......
  • 在centos中搭建mysql8
    1.卸载mariadb#一般centos7会默认安装mariadb,新安装的mysql8会与它造成依赖冲突,可以按下列方式进行卸载:rpm-qa|grepmariadb#如果出现mariadb-libs-5.5.68-1.el......