热门标签 | 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/

推荐阅读
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 如何在Linux系统上部署MySQL 5.7.28
    本文详细介绍了在Linux系统上部署MySQL 5.7.28的具体步骤。通过官方下载页面获取最新安装包后,按照提供的指南进行配置和安装。文章内容实用性强,适合初学者和有经验的管理员参考。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在重新安装Ubuntu并配置Django和PyCharm后,忘记测试MySQL连接,导致在后续配置过程中遇到错误:ERROR 2003 (HY000) - 无法连接到本地服务器 ‘127.0.0.1’ (111)。本文将详细介绍该错误的原因及解决步骤,帮助用户快速恢复MySQL服务的正常运行。我们将从检查网络配置、验证MySQL服务状态、配置防火墙规则等方面入手,提供全面的故障排除指南。 ... [详细]
  • MySQL 错误:用户 'root' 使用密码时访问被拒绝的原因及解决方法
    在配置CentOS 7上的MariaDB(MySQL)时,用户可能会遇到“1045 - Access denied for user 'root'@'localhost' (using password: YES)”的错误。这通常是由于密码设置不正确或权限配置问题导致的。本文将详细分析该错误的原因,并提供多种解决方法,包括重置root密码、检查配置文件和修复权限设置等。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 在使用 PHP 通过 SSL 安全连接到 MySQLi 数据库服务器时,遇到了一些技术难题。我的环境包括一个 Web 服务器和一个数据库服务器,两者均使用 OpenSSL 生成了证书。尽管证书内容一致,但在尝试从 Web 服务器使用 `mysql` 命令进行连接时,仍然遇到了问题。为了确保连接的安全性和稳定性,需要进一步检查证书配置和 PHP 的 SSL 设置,以排除潜在的配置错误或兼容性问题。 ... [详细]
  • mysql--mariadb--postgresql官网简介https:www.postgresql.org使用的镜像名称centospostgresql-96-centos7 ... [详细]
  • yum安装linux的mysql客户端,mysql在windows(含客户端工具)及linux(yum)环境下安装...
    下载windows安装包下载linux安装包下载windows下安装mysql(含客户端工具Navicat安装及配置)linux下安装mysql编译安装,自由linu ... [详细]
  • 我正在尝试在MariaDB中创建将两个表与一个桥表链接在一起的方法。该表本身称为“ActsIn ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了实现MySQL半同步架构相关的知识,希望对你有一定的参考价值。默认情况下,MySQL的复制功能是异步的, ... [详细]
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社区 版权所有