MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务型)、存在多个分支、读写效率瓶颈等问题。

一.内核性能的优化

由于腾讯云上的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的位置等信息)。

优化方法

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

优化效果

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

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

问题分析

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

优化方法

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

效果

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

二.主备库交互流程优化

问题分析

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

优化方法

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

效果

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

三.内核功能的优化

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

2. 主备强同步

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

四.外围系统的优化

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

mysql40190_MySQL 内核深度优化相关推荐

  1. mysql udb_UDB高可用数据库内核深度优化

    原标题:UDB高可用数据库内核深度优化 UDB是UCloud提供的云数据库,支持实例级别的高可用.UCloud数据库团队在数据库原生复制的多个方面进行了深度优化,提升UDB高可用数据库的功能和性能. ...

  2. 举个栗子看如何做MySQL 内核深度优化

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 作者介绍:简怀兵,腾讯云数据库高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson R ...

  3. 英特尔助力腾讯云深度优化云硬盘CBS 产品,打造极速云存储体验

    前言概述 在更多企业核心系统"云化"的今天,云存储系统作为业务数据的重要载体,其性能表现正 受到越来越多的关注.作为全球领先的云服务提供商之一,腾讯云通过先进的云硬盘 CBS (C ...

  4. 《C语言内核深度解析》——笔记及拓展(1)

    文章是我前几天读了朱有鹏,张先凤老师的<嵌入式Linux与物联网软件开发:C语言内核深度解析>写的,拜读之后,虽没有醍醐灌顶,至少解开了我之前的一些疑惑. <嵌入式Linux与物联网 ...

  5. [sql]大型网站MySQL深度优化揭秘

    大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路    2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...

  6. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"华章计算机&quo ...

  7. linux内核参数优化

    这是电商类的 linux内核参数优化,在网站响应上已经很不错了,time超时连接几乎为0了. sysctl.conf配置参数如下: net.ipv4.ip_forward = 0 net.ipv4.c ...

  8. LAMP 架构深度优化记录

    1.Apache worker/prefwork模式说明 在linux中,我们可以用httpd-l 查看安装的模块是prefork模式还是worker模式 [root@LAMP ~]# /applic ...

  9. linux内核参数优化 for 高并发服务器

    2019独角兽企业重金招聘Python工程师标准>>> linux内核参数优化net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_fil ...

最新文章

  1. 当前人工智能技术都在哪些领域有应用
  2. 完全二叉树的JAVA实现(以及非递归遍历方法)
  3. Cloud for Customer UI designer自动生成的一些模型
  4. cocos2d-x的未来之旅
  5. conda 换成清华的源_conda/pip 使用国内镜像安装第三方库
  6. Ackerman函数 非递归 java_Ackerman(nm)函数的非递归算法.doc
  7. vue -- router路由跳转错误 , NavigationDuplicated
  8. 风格迁移篇-AdaIN --使用自适应实例规范化实时传输任意样式
  9. NC65安装手册、NC65授权教程
  10. 五年技术工作的一点点感悟
  11. 数学分析教程(科大)——2.1笔记+习题
  12. UVA-10246 - Asterix and Obelix(dijkstra)
  13. 15软件班安卓课程实训总结
  14. python旋转图片
  15. 电脑的计算机文件打开格式,如何打开zip文件_怎样在电脑上打开zip文件
  16. 微信小程序-动态验证码
  17. 【转】Swagger详解(SpringBoot+Swagger集成)
  18. js隐藏android软键盘,如何使用JavaScript隐藏Android键盘?
  19. python到pandas_Python-Pandas
  20. 李彦宏蝉联福布斯内地首富

热门文章

  1. BatchQC包可视化分析去除组学数据批次效应
  2. Comparative assessment of long-read error correction software applied to Nanopore RNA-sequencing dat
  3. Dijkstra 贪心算法 动态规划
  4. Python3学习笔记-数据类型和变量
  5. 乌鲁木齐市计算机职业高中,乌鲁木齐职高有哪些专业
  6. 人群分割--Fully Convolutional Neural Networks for Crowd Segmentation
  7. GSM A5/1算法C语言代码实现和分析
  8. 计算机在线声音,电脑怎么在线录音
  9. java抽象的理解_Java中抽象类的理解
  10. exp导oracle数据库,使用exp/imp 在oracle数据库间导数据