iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么做MySQL内核深度优化
  • 585
分享到

怎么做MySQL内核深度优化

2024-04-02 19:04:59 585人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关怎么做Mysql内核深度优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.内核性能的优化由于腾讯云上的DB基本都需要跨园区灾备的特性,因此

这篇文章将为大家详细讲解有关怎么做Mysql内核深度优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一.内核性能的优化

由于腾讯云上的DB基本都需要跨园区灾备的特性,因此CDB for mysql的优化主要针对主从DB部署在跨园区网络拓扑的前提下,重点去解决真实部署环境下的性能难题。经过分析和调研,我们将优化的思路归纳为:“消除冗余I/O、缩短I/O路径和避免大竞争”。以下是内核性能的部分案例:

1.主备DB间的复制优化

怎么做MySQL内核深度优化

问题分析

如上图所示,在原生Mysql的复制架构中,Master侧通过Dump线程不断发送Binlog事件给Slave的I/O线程,Slave的I/O线程在接受到Binlog事件后,有两个主要的动作:

  • 写入到Relay Log中,这个过程会和Slave SQL线程争抢保护Relay Log的锁。

  • 更新复制元数据(包含Master的位置等信息)。

优化方法

经过分析,我们的优化策略是:

  • Slave I/O线程和Slave SQL线程是典型的单写单读生产者-消费者模型,是可以做到无锁设计的;因此实现思路就是Slave I/O线程在每次写完数据后,原子更新Relay Log的长度信息,Slave SQL线程读取Relay Log的时以长度信息为边界。这样就将原本竞争激烈的Relay Log锁化解为无锁;

  • 由于Binlog事件中的GTID(Global Transaction Identifier)和DB事务是一一对应的关系,所以Relay Log中的数据本身已经包含了所需要的复制元数据,所以我们可以不写Master info文件,消除了冗余的文件I/O;

  • 于DB都是以事务为更新粒度的,因为在Relay Log文件I/O上,我们通过合并离散小I/O为事务粒度的大I/O等手段,使磁盘I/O得以大幅提升。

优化效果

怎么做MySQL内核深度优化

如上图所示,经过优化:左图35.79%的锁竞争(futex)已经被完全消除;同压测压力下,56.15%的文件I/O开销被优化到19.16%,Slave I/O线程被优化为预期的I/O密集型线程。

2.主库事务线程和Dump线程间的优化

怎么做MySQL内核深度优化

问题分析

如上图所示,在原生MySQL中多个事务提交线程TrxN和多个Dump线程之间会同时竞争Binlog文件资源的保护锁,多个事务提交线程对Binlog执行写入,多个Dump线程从Binlog文件读取数据并发送给Slave。所有的线程之间是串行执行的!

优化方法

经过分析,我们的优化策略是:

  • 将读写分离开来,多个写入的线程还是在锁保护下串行执行,每一个写入线程写入完成后更新当前Binlog的长度信息,多个Dump线程以Binlog文件的长度信息为读取边界,多个Dump线程之间并行执行。以这种方式来让复制拓扑中的Dump线程发送得更快!

效果

怎么做MySQL内核深度优化

经过测试,优化后的内核,不仅提升了事务提交线程的性能,在Dump线程较多的情况下,对主从复制性能有较大提升。

二.主备库交互流程优化

怎么做MySQL内核深度优化

问题分析

如上图所示,在原生MySQL中主备库之间的数据发送和ACK回应是简单的串行执行,在上一个事件ACK回应到达之前,不允许继续发送下一个事件;这个行为在跨园区(RTT 2-3ms)的情况性能非常差,而且也不能很好地利用带宽优势。

优化方法

经过分析,我们的优化策略是:

  • 将发送和ACK回应的接收独立到不同的线程中,由于发送和接收都是基于tcp流的传输,所以时序性是有保障的;这样发送线程可以在未收ACK之前继续发送,接受线程收到ACK后唤醒等待的线程执行相应的任务。

效果

根据实际用例测试,优化后的TPS提升为15%左右。

三.内核功能的优化

1. 预留运维帐号连接数配额

在腾讯云上,不时遇到用户APP异常或者BUG从而占满DB的最大连接限制,这是CDB OSS帐号无法登录以进行紧急的运维操作。针对这个现状,我们在MySQL内核单独开辟了一个可配置的连接数配额,即便在上述场景下,运维帐号仍然可以连接到DB进行紧急的运维操作。极大地降低了异常情况下DB无政府状态的风险。该帐号仅有数据库运维管理权限,无法获取用户数据,也保证了用户数据的安全性。

2. 主备强同步

针对一些应用对数据的一致性要求非常高,CDB在MySQL原生半同步的基础上进行了深度优化,确保一个事务在主库上提交之前一定已经复制到至少一个备库上。确保主库宕机时数据的一致性。

四.外围系统的优化

除了以上提到的MySQL内核侧的部分优化,我们也在外围OSS平台进行了多处优化。例如使用异步MySQL ping协议实现大量实例的监控、通过分布式技术来加固原有系统的HA/服务发现和自动扩容等功能、在数据安全/故障切换和快速恢复方面也进行了多处优化。

关于“怎么做MySQL内核深度优化”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么做MySQL内核深度优化

本文链接: https://www.lsjlt.com/news/62237.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么做MySQL内核深度优化
    这篇文章将为大家详细讲解有关怎么做MySQL内核深度优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.内核性能的优化由于腾讯云上的DB基本都需要跨园区灾备的特性,因此...
    99+
    2024-04-02
  • Linux内核怎么优化
    本篇内容主要讲解“Linux内核怎么优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux内核怎么优化”吧!分析:大多数MySQL都部署在linux系统上,所以操作系统的一些参数也会影响到...
    99+
    2023-06-28
  • Mysql深度分页搜索怎么优化
    要优化MySQL深度分页搜索,可以考虑以下几种方法: 使用索引:确保搜索的字段上有适当的索引。对于深度分页搜索,较大的表可能需要...
    99+
    2023-10-28
    Mysql
  • 如何理解MySQL高可用数据库内核深度优化的四重定制
    如何理解MySQL高可用数据库内核深度优化的四重定制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。近期我们的数据库团队对原生复制的多个方面进行...
    99+
    2024-04-02
  • linux内核编译怎么优化
    编译 Linux 内核时,可以采取以下几种优化措施来提高性能: 选择合适的配置选项:根据硬件平台和特定要求,选择适合的配置选项。...
    99+
    2024-02-29
    linux
  • mysql优化怎么做的
    这篇文章主要为大家展示了“mysql优化怎么做的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql优化怎么做的”这篇文章吧。mysql优化怎么做的?答:m...
    99+
    2024-04-02
  • 怎么浅析Facebook对MySQL数据库的深度优化
    这期内容当中小编将会给大家带来有关怎么浅析Facebook对MySQL数据库的深度优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Facebook拥有世界上最大的MySQL数据库集群,其中包含了成千上万...
    99+
    2023-06-10
  • Linux怎么进行内核参数优化
    今天小编给大家分享一下Linux怎么进行内核参数优化的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sysctl命令及linu...
    99+
    2023-06-28
  • MySQL核心技术原理之:应用案例深度剖析——支付场景优化
    作者:禅与计算机程序设计艺术 1.简介 随着互联网支付业务的发展,在线支付已经成为电子商务的标配,支付宝、微信支付、银行卡等都成为了绝佳的支付方式。对于传统的数据库系统来说,操作支付相关数据是比较麻...
    99+
    2023-10-23
    大数据 人工智能 语言模型 Java Python 架构设计
  • 怎么做性能优化
    本篇内容主要讲解“怎么做性能优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么做性能优化”吧!问题分析标题中问出了两个问题,一个是有没有做过性能优化的工作,...
    99+
    2024-04-02
  • 深度技术Win7旗舰版虚拟内存优化技巧
      估计大家有时候感觉电脑内存老是在50%以上,觉得比较卡。其实我们可以提高以下电脑的虚拟内存来提高电脑的性能。现在大家普遍使用的是深度win7旗舰版,那作者就简单的讲以下深度win7旗舰版是如何设置的。优化后妈妈再也不...
    99+
    2023-06-11
    深度技术 Win7 内存优化 旗舰 虚拟内存
  • mySQL中怎么优化虚拟内存
    这篇文章给大家介绍mySQL中怎么优化虚拟内存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 更改后如下: innodb_buffer_pool_size=576M ->25...
    99+
    2024-04-02
  • 怎么深入学习Linux内核模块
    本篇文章给大家分享的是有关怎么深入学习Linux内核模块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。lsmod 命令能够告诉你当前系统上加载了哪些内核模块,以及关于使用它们的...
    99+
    2023-06-16
  • MySQL百万数据深度分页优化思路解析
    目录业务场景瓶颈再现问题分析回表覆盖索引IOLIMTI 2000,10 ?问题总结解决方案优化前后性能对比业务场景 一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查...
    99+
    2023-05-12
    MySQL数据分页优化 MySQL分页优化百万级数据
  • mysql中怎么优化插入记录速度
    mysql中怎么优化插入记录速度,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一. 对于MyISAM引擎表常见的优化方法如下:1. 禁用索引。...
    99+
    2024-04-02
  • windows10多核优化怎么开启
    要开启Windows 10的多核优化,您可以按照以下步骤进行操作: 打开“控制面板”。您可以通过在任务栏的搜索栏中输入“控制面板...
    99+
    2023-10-25
    windows10
  • 怎么将SEO优化做好
    这篇文章将为大家详细讲解有关怎么将SEO优化做好,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  一、文章的原创性  文章的的原创性有多么的重要,对于新站来说的话那就是先原创几十篇文章吗,等你的网站有排名...
    99+
    2023-06-10
  • win7怎么优化速度
    这篇文章主要介绍“win7怎么优化速度”,在日常操作中,相信很多人在win7怎么优化速度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7怎么优化速度”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!wi...
    99+
    2023-07-01
  • win11大小核调度怎么调整? 优化性能win11的技巧
    自从英特尔12代酷睿开始正式采用大小核设计以来,就受到不少用户的吐槽。不过升级到Win11之后,由于Win11对于大小核设计有所优化,所以性能差别并不是很大。但是一旦运行一些大型游戏或者虚拟机时,大小核调度问题就被放大了...
    99+
    2023-05-19
    win11 大小核
  • seo怎么优化核心关键词
    小编给大家分享一下seo怎么优化核心关键词,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!企业站通常会有两到三个关键词作为核心关键词的,通常是和企业的产品有关,在优...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作