mysql40190_MySQL 内核深度优化
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 内核深度优化相关推荐
- mysql udb_UDB高可用数据库内核深度优化
原标题:UDB高可用数据库内核深度优化 UDB是UCloud提供的云数据库,支持实例级别的高可用.UCloud数据库团队在数据库原生复制的多个方面进行了深度优化,提升UDB高可用数据库的功能和性能. ...
- 举个栗子看如何做MySQL 内核深度优化
2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 作者介绍:简怀兵,腾讯云数据库高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson R ...
- 英特尔助力腾讯云深度优化云硬盘CBS 产品,打造极速云存储体验
前言概述 在更多企业核心系统"云化"的今天,云存储系统作为业务数据的重要载体,其性能表现正 受到越来越多的关注.作为全球领先的云服务提供商之一,腾讯云通过先进的云硬盘 CBS (C ...
- 《C语言内核深度解析》——笔记及拓展(1)
文章是我前几天读了朱有鹏,张先凤老师的<嵌入式Linux与物联网软件开发:C语言内核深度解析>写的,拜读之后,虽没有醍醐灌顶,至少解开了我之前的一些疑惑. <嵌入式Linux与物联网 ...
- [sql]大型网站MySQL深度优化揭秘
大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路 2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...
本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"华章计算机&quo ...
- linux内核参数优化
这是电商类的 linux内核参数优化,在网站响应上已经很不错了,time超时连接几乎为0了. sysctl.conf配置参数如下: net.ipv4.ip_forward = 0 net.ipv4.c ...
- LAMP 架构深度优化记录
1.Apache worker/prefwork模式说明 在linux中,我们可以用httpd-l 查看安装的模块是prefork模式还是worker模式 [root@LAMP ~]# /applic ...
- linux内核参数优化 for 高并发服务器
2019独角兽企业重金招聘Python工程师标准>>> linux内核参数优化net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_fil ...
最新文章
- 当前人工智能技术都在哪些领域有应用
- 完全二叉树的JAVA实现(以及非递归遍历方法)
- Cloud for Customer UI designer自动生成的一些模型
- cocos2d-x的未来之旅
- conda 换成清华的源_conda/pip 使用国内镜像安装第三方库
- Ackerman函数 非递归 java_Ackerman(nm)函数的非递归算法.doc
- vue -- router路由跳转错误 , NavigationDuplicated
- 风格迁移篇-AdaIN --使用自适应实例规范化实时传输任意样式
- NC65安装手册、NC65授权教程
- 五年技术工作的一点点感悟
- 数学分析教程(科大)——2.1笔记+习题
- UVA-10246 - Asterix and Obelix(dijkstra)
- 15软件班安卓课程实训总结
- python旋转图片
- 电脑的计算机文件打开格式,如何打开zip文件_怎样在电脑上打开zip文件
- 微信小程序-动态验证码
- 【转】Swagger详解(SpringBoot+Swagger集成)
- js隐藏android软键盘,如何使用JavaScript隐藏Android键盘?
- python到pandas_Python-Pandas
- 李彦宏蝉联福布斯内地首富
热门文章
- BatchQC包可视化分析去除组学数据批次效应
- Comparative assessment of long-read error correction software applied to Nanopore RNA-sequencing dat
- Dijkstra 贪心算法 动态规划
- Python3学习笔记-数据类型和变量
- 乌鲁木齐市计算机职业高中,乌鲁木齐职高有哪些专业
- 人群分割--Fully Convolutional Neural Networks for Crowd Segmentation
- GSM A5/1算法C语言代码实现和分析
- 计算机在线声音,电脑怎么在线录音
- java抽象的理解_Java中抽象类的理解
- exp导oracle数据库,使用exp/imp 在oracle数据库间导数据