一、MySQL连接池

1   连接池通常实现在client端,是指应用(客户端)预先创建一定的连接,利用这些连接服务于客户端所有的DB请求。
2 如果某一个时刻,空闲的连接数小于DB的请求数,则需要将请求排队,等待空闲连接处理,这时就需要设置大一点的连接数。

二、MySQL线程缓存

    对应one-thread-per-connection,client连接对应的线程会被缓存起来,缓存的线程数量由 thread_cache_size大小决定。
当服务器不断有大量连接创建、关闭的场景下,使用线程缓存能够重用缓存起来的线程,避免了线程大量创建销毁带来的性能消耗,但是仍然无法解决高连接数带来的线程数过高的问题。
当线程池功能开启后,线程缓存会自动失效,即变量thread_cache_size将被忽略,Threads_cached 状态变量始终为0。

三、MySQL线程池

对应loaded-dynamically,如果是percona版本则是pool-of-threads,线程池实现在server端,通过创建一定数量的线程响应DB请求;相对于one-conection-per-thread的一个线程服务一个连接的方式,
线程池服务的最小单位是SQL语句,即一个线程可以对应多个活跃的连接。通过线程池,可以将server端的服务线程数控制在一定的范围。 通过参数thread_handling来控制是否使用线程池,thread_handling 取值:
no-threads
one-thread-per-connection(默认值)
loaded-dynamically(大于等于5.7.9版本)
pool-of-threads(Percona版本)
Percona 在MySQL社区版基础上为 thread_handling 参数增加了pool-of-threads,Percona 的线程池实现在server层,与官方版以plugin形式实现。

最新文章

  1. Linux下的文件与目录操作 BY 四喜三顺
  2. nib文件的注册及加载
  3. [JFinal 2] JFinal 开发框架
  4. public、private、protected 与 默认 等访问修饰符
  5. cocos2d-x 纹理深入研究 第二部分
  6. Android EventBus
  7. 比较全面的gdb调试命令
  8. LTTng调试: 一个系统软件工程师的随手涂鸦
  9. My Stuck in C++
  10. 你真的知道final关键字吗?
  11. 在JavaScript中,如何判断数组是数组?
  12. .net core 发布linux报错“The configured user limit (128) on the number of inotify instances has been reached”
  13. EntityFramework(1)基础概念与Database First
  14. Yarn vs npm: 你需要知道的一切(转)
  15. 软件工程实践_结对Task2_ student_department_matching
  16. C# Dictionary<TKey,TValue>如何添加键重复的内容
  17. Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
  18. 重写Object的equals方法
  19. PAT 甲级 1029 Median
  20. Bootloader之uBoot简介

热门文章

  1. 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01
  2. python Flask 操作数据库
  3. [机器学习] Yellowbrick使用笔记4-目标可视化
  4. B站地区限制破解方法
  5. (4)go-micro微服务proto开发
  6. elasticsearch实现基于拼音搜索
  7. MySQL 删除数据 批量删除(大量)数据
  8. STL序列式容器使用注意、概念总结
  9. CSS 3 所有的选择器整理(2023.2)
  10. Python函数式编程之map/filter/reduce/sorted