mysql调优技巧 增加线程缓存大小

mysql调优技巧 增加线程缓存大小,第1张

增加线程缓存大小

连接管理器线程处理服务器监听的网络接口上的客户端连接请求。连接管理器线程将每个客户端连接与专用于它的线程关联,该线程负责处理该连接的身份验证和所有请求处理。因此,线程和当前连接的客户端之间是一对一的比例。确保线程缓存足够大以容纳所有传入请求是非常重要的。

MySQL提供了许多与连接线程相关的服务器变量:

线程缓存大小由thread_cache_size系统变量决定。默认值为0(无缓存),这将导致为每个新连接设置一个线程,并在连接终止时需要处理该线程。如果希望服务器每秒接收数百个连接请求,那么应该将thread_cache_size设置的足够高,以便大多数新连接可以使用缓存线程。可以在服务器启动或运行时设置max_connections的值。

还应该监视缓存中的线程数(Threads_cached)以及创建了多少个线程,因为无法从缓存中获取线程(Threads_created)。关于后者,如果Threads_created继续以每分钟多于几个线程的增加,请考虑增加thread_cache_size的值。

使用MySQL show status命令显示MySQL的变量和状态信息。这里有几个例子:

Monyog线程缓存监测

Monyog提供了一个监控线程缓存的屏幕,名为“线程”。与MySQL线程相关的服务器变量映射到以下Monyog指标:

Monyog线程屏幕还包括“线程缓存命中率”指标。这是一个提示线程缓存命中率的指标。如果值较低,则应该考虑增加线程缓存。在状态栏以百分比形式显示该值;它的值越接近100%越好。

如果这些指标的值等于或超过指定值,则可以将每一个指标配置为发出警告和/或严重警报

线程池缓存大小

( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 )

查看 thread_cache_size

show global variables like 'thread_cache_size'

设置 thread_cache_size

set global thread_cache_size = 20 (立即生效重启后失效)

MySQL 配置文件 my.cnf 中 mysqld 下添加 thread_cache_size

[mysqld]

thread_cache_size = 20

可以通过如下几个MySQL状态值来适当调整线程池的大小

可以通过 show global status like 'Threads_%' 命令查看以上4个状态值

当 Threads_cached 越来越少 但 Threads_connected 始终不降 且 Threads_created 持续升高

这时可适当增加 thread_cache_size 的大小

MySQL 5.7 参考手册 - thread_cache_size

通俗点说,线程与进程都是为了更充足地利用CPU资源。要把程序更有序更高效地让CPU执行,就需要先把程序分块处理,而 *** 作系统可以把程序视为进程进行调度,有多少程序在运行就有多少进程。但有些程序可能会占用很大块CPU资源,如果不再把进程再细分无法更高效利用CPU资源,就把进程分成多个线程。如何分线程是程序自己的事。

mysql是多线程架构,一个查询或者一个过程可以按其运算属性再分开多个线程进行运算,这个线程多少由配置决定,大多数我们不必理mysql线程数,除了需要对mysql深度优化。mysql一个实例就是一个进程,一般情况下mysql进程就一个,而也可以同时启动多个MYSQL实例,这时就会有多个MYSQL进程。

在实际应用下,使用多个MYSQL实例并不多见,如果担心WEB服务与MYSQL进程互相争夺资源会影响数据处理的效率,可以把MYSQL分到独立的服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6105378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存