热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MariaDB数据库中threadpool解析

对于MySQL5.5来说只有企业版本中含有ThreadPool,但幸运的是mariadb5.1中就已存在该功能,mariadb5.5中进行了改进。本篇暂且介绍FAQ:后期会放出其工作原理及使用情况。商业版本中5.5.16添加了threadhandlingmodel(线程池)来应对多客户连接问题
对于MySQL5.5来说只有企业版本中含有 Thread Pool,但幸运的是 mariadb 5.1中就已存在该功能,mariadb 5.5 中进行了改进。
   本篇暂且介绍FAQ:后期会放出其工作原理及使用情况。
   商业版本中 5.5.16 添加了 thread  handling model (线程池)来应对多客户连接问题。代替一个session 一个线程的问题。在MariaDB 5.1-5.3 中已经实现该功能,在MariaDB 5.5中实现优化,动态的线程池等,这个和商业版本有少许区别,具体查看https://kb.askmonty.org/en/thread-pool-in-mariadb-55/
   适用threadpool场景:查询相对较短,或者CPU比较吃紧。或者可以通过 threadpool 限制线程数量来达到节省内存的目的。
   安装条件:Linux 内核需高于2.6.9 版本
   在某些场合下 效果可能不是很理想:
   1、突发的工作负载,长时间不活动和很多短期的高活跃连接,这个是有可以通过调整等待时间来应对这样的情况。Thread_pool_idle_timeout
   2、并发很多,且长时间执行的查询,一个线程执行的时候 都是重新创建,也不会等待threadpool 释放资源,这种出现在数据仓库的情景。长时间运行的查询会阻塞其他查询的执行,对于拥有阻塞监测或者其他抢占机制 可以固定 阻塞时长
   3、一些简单的查询总是很快执行完毕。无论你的机器负载多高,在拥有 threadpool 的时候,query 可能会出现排队情况,比如select  1;可能会比thread-per-connection消耗更多时间。
FAQ:
   线程池解决的问题:
   1、太多的线程堆栈,几乎让CPU的缓存无用,线程池 可以减少CPU占用内存空间。
   2、建立过多的线程容易导致过多的上下文切换,解决办法是是维持一组低于客户端连接数量,平衡mysql连接并保持较高性能。
   3、过多的事务并发执行导致资源争用,延长热锁争用
   线程池如何限控制并发的会话线程和事务来达到最优的性能和吞吐量?
   该线程池使用“分步解决”的方法来限制和平衡并发量,线程池将connections 和threads分开,这样thread 执行从connections 接受的statement,两者并没有固定的绑定在一起。线程池根据配置的已划分优先级的thread group 来处理连接。
   线程池和客户端连接池有什么区别:
   两者的职责不是同的:
客户端连接池:处于客户端一边,client不会不断的连接或断开server,它被设计为 缓存空闲的连接来被其他的connections 使用。减小建立和拆除connections的开销。Client pool 对查询处理能力和后端数据库的负载时不可见的。相比之下 thread pool 是处在MySQL 这一端的。它们被设计为管理已经建立的 connections 和接受到的query
   线程池在连接太多的时候怎么动态扩展,在链接减少的时候怎么收缩;线程池本身的开销怎样控制;是否能够利用OS原生的线程池来直接提供服务等一系列问题都是引入线程池需要考虑的。
线程相互等待的问题。如果有长链接和短链接同时存在,那么短链接可能要等到长链接执行完所有操作,才能被轮到,执行时间不可控.
MariaDB充分考虑和优化了thread pool的实现,并提供了一系列参数给用户调整线程池的配置(thread_pool_size, thread_pool_stall_limit, thread_pool_idle_timeout, thread_pool_oversubscribe )和一些状态值(threadpool_threads,threadpool_idle_threads)提供给用户查询线程池使用情况。从实现方面来看,MariaDB相对MySQL Enterprise的线程池会使用原生的系统提供的线程池,并且考虑到各个系统OS的特点,优化多路IO(IO multiplexing)接口的使用。 具体信息可以参考:http://kb.askmonty.org/en/thread-pool-in-mariadb-55/

推荐阅读
  • 1.ATP方式安装在ubuntu系统的apt软件仓库中,默认存在MySQL数据库,所以直接使用apt命令就可以安装。使用命令:aptapt-getin ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了CentOS7编译mysql8.0.12相关的知识,希望对你有一定的参考价值。步骤一:安装 ... [详细]
  • 阿里云主机实战应用之centos7上的防火墙设置
    最近公司又上了一台服务器,以前都是用centos6系统,这次选择使用了centos7系统的安装镜像,因为现在程序版本在centos7上一般php默认就是5.4以上的,mysql也 ... [详细]
  • Linux环境中使用Mysql数据库
    Linux下Mysql数据库MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司,目前属于Oracle公司,MySQL被广泛地应用在I ... [详细]
  • MySQL/MariaDB/PerconaDB提权条件漏洞
    背景  2016年11月01日,国外安全研究员DawidGolunski在MyS ... [详细]
  • 本文是搭建的mariadb-10.0.17版本的下载地址:https:downloads.mariadb.orginterstitialmariadb-10.0.17sourcemariadb-10.0.17.tar.gzfromhtt ... [详细]
  • centos7如何利用yum安装mysql 8.0.12
    这篇文章将为大家详细讲解有关centos7如何利用yum安装mysql8.0.12,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
  • MYsql_linux mysql
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了linuxmysql相关的知识,希望对你有一定的参考价值。一数据库安装查看:[[email pr ... [详细]
  • 1、MySQL标志说明MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 如何部署Zabbix监控实现监测和报警机制
    这篇文章的知识点包括:Zabbix的安装部署、Zabbix监控的实现以及Zabbix报警机制的实现,阅读完整文相信大家对Zabbix监控的使用有了一定的认识。Zabb ... [详细]
author-avatar
爱看好电影110_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有