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

MariaDB新特性:threadpool

我们按照性能、功能、管理、NoSQL扩展各个方面来一一介绍MariaDB的新特性。首先是性能方面的线程池。如果你短连接较多,如果你的数据库CPU压力过高,如果你想降低多个sleep线程白白占用机器内存,threadpool都能够缓解。MySQL会给每个过来的客户端连接分配一
我们按照性能、功能、管理、NoSQL扩展各个方面来一一介绍MariaDB的新特性。首先是性能方面的线程池。如果你短连接较多,如果你的数据库CPU压力过高,如果你想降低多个sleep线程白白占用机器内存,thread pool都能够缓解。

MySQL会给每个过来的客户端连接分配一个线程,专门用于跟这个客户端交互。但是,随着并发连接的增加,线程会越来越多。CPU的上下文切换,cache命中率下降以及锁的竞争都会加剧。为了缓解这个问题,MariaDB引入的线程池的概念。这个对业务开发人员来说并不是一个陌生的概念,甚至有些开发人员会说,这个特性早就应该加上了!其实这个特性在MySQL的Enterprise早就有了这个特性,需要付费才能使用。但是MariaDB是开源免费的。
当然线程池好处很多:
可以让MySQL维护的线程数降下来。很多MySQL DBA在show processlist的时候,经常会看到一堆不做事,一直sleep在那里的线程,如果使用了线程池,这个数量可以明显减少。
对于那些短连接,CPU bound的MySQL来说,是一个非常好的特性。MySQL不用每次在客户端发起连接的时候,临时申请一个新的线程,并且立刻就需要把这个连接的资源全部释放掉。
节省MySQL内存占用。线程多了,内存占用当然比较多。用线程池,可以把有限的内存让给更需要内存的buffer pool或者keycache使用。减少磁盘IO,提高系统的响应时间。
避免MySQL连接数不够。当mysql达到max_connections时,会拒绝连接。使用线程池的话,就可以不用担心这个问题了。

但是,事情总是有利有弊的,使用线程池在某些场景下并不会有多少性能的提升:
线程池技术要求相对较高。线程池在连接太多的时候怎么动态扩展,在链接减少的时候怎么收缩;线程池本身的开销怎样控制;是否能够利用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)接口的使用。 

推荐阅读
  • Nagios可视化插件开发指南 —— 配置详解
    本文详细介绍了Nagios监控系统的配置过程,包括数据库的选择与安装、Nagios插件的安装及配置文件的解析。同时,针对常见的配置错误提供了具体的解决方法。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • MySQL 8.0 新特性详解:免费视频教程上线
    本文介绍了一套在慕课网上发布的免费视频教程,深入解析 MySQL 8.0 的核心新功能,包括增强的安全性、用户管理、新的索引类型、CTE 和窗口函数等。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在2015年1月的MySQL内核报告中,我们详细探讨了性能优化和Group Commit机制的改进。尽管网上已有大量关于Group Commit的资料,本文将简要回顾其发展,并重点分析MySQL 5.6及之前版本中引入的二进制日志(Binlog)对性能的影响。此外,我们还将深入讨论最新的优化措施,如何通过改进Group Commit机制显著提升系统的整体性能和稳定性。 ... [详细]
  • 在重新安装Ubuntu并配置Django和PyCharm后,忘记测试MySQL连接,导致在后续配置过程中遇到错误:ERROR 2003 (HY000) - 无法连接到本地服务器 ‘127.0.0.1’ (111)。本文将详细介绍该错误的原因及解决步骤,帮助用户快速恢复MySQL服务的正常运行。我们将从检查网络配置、验证MySQL服务状态、配置防火墙规则等方面入手,提供全面的故障排除指南。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • MySQL 错误:用户 'root' 使用密码时访问被拒绝的原因及解决方法
    在配置CentOS 7上的MariaDB(MySQL)时,用户可能会遇到“1045 - Access denied for user 'root'@'localhost' (using password: YES)”的错误。这通常是由于密码设置不正确或权限配置问题导致的。本文将详细分析该错误的原因,并提供多种解决方法,包括重置root密码、检查配置文件和修复权限设置等。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 如何在Linux系统上部署MySQL 5.7.28
    本文详细介绍了在Linux系统上部署MySQL 5.7.28的具体步骤。通过官方下载页面获取最新安装包后,按照提供的指南进行配置和安装。文章内容实用性强,适合初学者和有经验的管理员参考。 ... [详细]
  • 我正在尝试在MariaDB中创建将两个表与一个桥表链接在一起的方法。该表本身称为“ActsIn ... [详细]
author-avatar
年庚瑶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有