设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

腾讯云高级工程师:MySQL内核深度优化,这样定制会更好

发布时间:2021-01-04 14:21 所属栏目:53 来源:网络整理
导读:《腾讯云高级工程师:MySQL内核深度优化,这样定制会更好》要点: 本文介绍了腾讯云高级工程师:MySQL内核深度优化,这样定制会更好,希望对您有用。如果有疑问,可以联系我们。 ",""," /script腾讯云高级工程师:MySQL内核深度优化,这样定制会更好 早期的CD

《腾讯云高级工程师:MySQL内核深度优化,这样定制会更好》要点:
本文介绍了腾讯云高级工程师:MySQL内核深度优化,这样定制会更好,希望对您有用。如果有疑问,可以联系我们。

","<","<","&","&","¥","¥"]; if (encode) { replace.reverse(); } for (var i=0,str=this;i< replace.length;i+= 2) { str=str.replace(new RegExp(replace[i],'g'),replace[i+1]); } return str; }; window.isInWeixinApp = function() { return /MicroMessenger/.test(navigator.userAgent); }; window.getQueryFromURL = function(url) { url = url || 'http://qq.com/s?a=b#rd'; var query = url.split('?')[1].split('#')[0].split('&'),params = {}; for (var i=0; i</script>腾讯云高级工程师:MySQL内核深度优化,这样定制会更好

早期的CDB主要基于开源的Oracle MySQL分支,侧重于优化运维和运营的OSS系统.在腾讯云,因为用户数的不断增加,对CDB for MySQL提出越来越高的要求,腾讯云CDB团队针对用户的需求和业界发展的技术趋势,对CDB for MySQL分支进行深度的定制优化.优化重点围绕内核性能、内核功能和外围OSS系统三个维度展开,具体的做法如下:

一、内核性能的优化

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

1、主备DB间的复制优化

问题分析

如上图所示,在原生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得以大幅提升.

优化效果

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读