问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql怎么设置thread

发布网友 发布时间:2022-04-26 13:16

我来回答

2个回答

热心网友 时间:2022-04-08 01:59

MySQL里面为了提高客户端请求创建连接过程的性能,提供了一个连接池也就是
Thread_Cache池,将空闲的连接线程放在连接池中,而不是立即销毁.这样的好处就是,当又有一个新的请求的时候,mysql不会立即去创建连接
线程,而是先去Thread_Cache中去查找空闲的连接线程,如果存在则直接使用,不存在才创建新的连接线程.

有关Thread_Cache在MySQL有几个重要的参数,简单介绍如下:

thread_cache_size

Thread_Cache
中存放的最大连接线程数.在短连接的应用中Thread_Cache的功效非常明显,因为在应用中数据库的连接和创建是非常频繁的,如果不使用
Thread_Cache那么消耗的资源是非常可观的!在长连接中虽然带来的改善没有短连接的那么明显,但是好处是显而易见的.但并不是越大越好大了反而
浪费资源这个的确定一般认为和物理内存有一定关系,如下:

复制代码 代码如下:

1G —> 8
2G —> 16
3G —> 32
>3G —> 64

如果短连接多的话可以适当加大.
thread_stack

每个连接被创建的时候,mysql分配给它的内存.这个值一般认为默认就可以应用于大部分场景了,除非必要非则不要动它.

thread_handing

运用Thread_Cache处理连接的方式,5.1.19添加的新特性.有两个值可选[no-threads|one-thread-per-
connection] 看字面意思大家也该猜出*分了,呵呵,no-threads
服务器使用一个线程,one-thread-per-connection
服务器为每个客户端请求使用一个线程.原手册中提到,no-threads是在Linux下调试用的.

复制代码 代码如下:

mysql> show variables like 'thread%';
+——————-+—————————+
| Variable_name | Value |
+——————-+—————————+
| thread_cache_size | 32 |
| thread_handling | one-thread-per-connection |
| thread_stack | 196608 |
+——————-+—————————+
3 rows in set (0.01 sec)
mysql> show status like '%connections%';
+———————-+——–+
| Variable_name | Value |
+———————-+——–+
| Connections | 199156 |
| Max_used_connections | 31 |
+———————-+——–+
2 rows in set (0.00 sec)

mysql> show status like '%thread%';
+————————+——–+
| Variable_name | Value |
+————————+——–+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 3 |
| Threads_connected | 6 |
| Threads_created | 8689 |
| Threads_running | 5 |
+————————+——–+
6 rows in set (0.00 sec)

通过以上3个命令,可以看到服务器的 thread_cache池中最多可以存放32个连接线程,为每个客户端球使用一个线程.为每个连接的线程分配192k的内存空间.
服 务器总共有199156次连接,最大并发连接数为31,当前在thread_cashe池中的连接数为3个,连接数为6个,处于活跃状态的有5个,共创建 了8689次连接.显然这里以短连接为主.可以算出thread_cache命中率,公式为:

复制代码 代码如下:

Thread_Cache_Hit=(Connections-Thread_created)/Connections*100%

当前服务器的Thread_cache命中率约为95.6%这个结果我还是比较满意的.但是可以看出 thread_cache_size有点多余改成16或8更合理一些.

热心网友 时间:2022-04-08 03:17

连接管理流程
通过poll监听mysql端口的连接请求
收到连接后,调用accept接口,创建通信socket
初始化thd实例,vio对象等
根据thread_handling方式设置,初始化thd实例的scheler函数指针
调用scheler特定的add_connection函数新建连接
下面代码展示了scheler_functions模板和线程池对模板回调函数的实现,这个是多种连接管理的核心。
struct scheler_functions
{
uint max_threads;

uint *connection_count;

ulong *max_connections;

bool (*init)(void);

bool (*init_new_connection_thread)(void);

void (*add_connection)(THD *thd);

void (*thd_wait_begin)(THD *thd, int wait_type);

void (*thd_wait_end)(THD *thd);

void (*post_kill_notification)(THD *thd);

bool (*end_thread)(THD *thd, bool cache_thread);

void (*end)(void);
};
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见穿堂风 没有爱情我们一样会快乐的对吗 没有爱情的人会快乐么? 解除合同的效力有什么 合同解除会产生什么法律效力 合同解除后,哪些条款仍具效力? 合同解除产生哪些效力呢 民法典中合同解除产生哪些效力 解除合同的效力有哪些 济南七中学校怎么样 mysql_pconnect() 和 mysql_connect()区别,结果和手册讲得正好相反... 凉拌蒲公英怎么做 mysql 语句 这句话是什么意思 java正则表达式解析Mysql数据库错误日志 你有一个错误的SQL语法检查手册对应到你的MySQL MySQL中如何定义trigger? mysql 事件 系统参数 mysq Navicat 8中 l触发器 请教 mysql中的全文本搜索用在什么情况下? 贷款买房如何办理过户 买方贷款买房,如何过户 我已买房是贷款,写的是我的名字,父母的房子要给我怎么过户 我用小叔子名字贷款买房现在贷款未还清贷款,现在能过户到我自己的名下吗? 有贷款的房子怎么过户给未成年子女? 商业贷款买房如何过户?过户所需材料有哪些? 用妹妹名字贷款买房怎么过户 有贷款的房子怎么过户给别人 没还清贷款,房子怎么过户? 夫妻双方贷款买房,房产证上为2个人得名字,没有离婚,房产证怎么能过户到一个人名下? 商业贷款买房怎么过户 西餐三宝是哪几种原料? 西餐厨房三宝是什么 西餐调料三宝是那几样? 做酱牛肉洋葱能代替大葱吗 在家做一顿西餐都需要些什么东西呢? 【崇文门 —— 东单 —— 建国门 —— 国贸】沿线有无清静的西餐厅? 前门前怎么样?好不好?值不值得买? 开车从望京如何到新桥三宝乐西餐厅怎么走 前门前周边环境怎么样?生活便利吗? 360手机助手可以恢复微信聊删除吗天记录 删除的微信好友用360手机助手怎么恢复 微信上的朋友删除了还能恢复吗 m.cz88.net 高校教师资格证能全国通用吗? 高校教师资格证是全国通用的吗 教师资格证是全国通用吗 请问高等学校教师资格证是全国通用的吗? 为什么我电脑Excel不能输入汉字呢? 张继科参加过几届奥运会 张继科参加几届奥运会 2016巴西奥运会张继科的比赛有哪些 张继科里约奥运会赛程时间表