详情页标题前

阿里云RDS数据库Faster DDL-云淘科技

详情页1

优化DDL操作过程中的Buffer Pool管理机制,降低DDL操作带来的性能影响,提升在线DDL操作的并发数。

前提条件

实例版本如下:

  • MySQL 8.0(内核小版本为20200630或以上)
  • MySQL 5.7(内核小版本为20200630或以上)
  • MySQL 5.6(内核小版本为20200630或以上)

背景信息

数据库经常会执行DDL操作,也经常会遇到DDL相关的问题,例如:

  • 为什么加索引会造成实例的抖动,影响正常的业务读写?
  • 为什么不到1 GB的执行DDL有时需要十几分钟?
  • 为什么使用了临时表的连接退出时会造成实例抖动?

针对这些常见问题,RDS内核团队进行分析后发现MySQL在DDL操作期间的缓存维护逻辑存在性能缺陷,通过深入分析及多次测试,开发Faster DDL功能,优化了Buffer
Pool页面管理策略,大幅减少DDL操作导致的锁争用,有效解决或缓解上述问题,让您的实例在正常业务压力下可以安心执行DDL操作。

开启Faster DDL

您可以在控制台修改参数loose_innodb_rds_faster_ddl为ON,开启Faster DDL。详情请参见设置实例参数。

DDL场景测试

  • 测试场景

    选取RDS MySQL 8.0支持的两种In Place Online DDL操作进行验证, 其中CREATE INDEX操作不需要重建表,OPTIMIZE TABLE操作需要重建表。

    操作 Instant In Place 重建表 允许并发DML 只修改元数据
    CREATE INDEX
    OPTIMIZE TABLE
  • 测试实例

    MySQL 8.0实例(8核、64 GB),执行DDL操作的表大小为600 MB。

  • 测试过程

    使用Sysbench模拟线上业务进行压力测试,在压测期间执行DDL操作,进行反复对比测试。

  • 测试结果
    操作 平均执行时间(关闭优化) 平均执行时间(开启优化) 性能提升倍数
    Create Index 56秒 4.9秒 11.4
    Optimize Table 220秒 17秒 12.9
  • 测试小结

    在DDL场景下,优化后的AliSQL内核MySQL相比社区版本MySQL,DDL操作执行时间缩短了90%以上。

临时表场景测试

MySQL在很多情况下会使用临时表,例如查询information_schema库里的表、 加速复杂SQL执行时自动创建临时表。在线程退出时系统会集中清理用过的临时表,这也属于一种特殊类型的DDL操作,同样会导致实例的性能抖动。
详情请参见Temp ibt tablespace truncation at disconnection stuck InnoDB under large BP。

  • 测试实例

    MySQL 8.0实例(8核、64 GB)。

  • 测试过程

    使用tpcc-mysql进行压力测试,将Buff Pool基本用满,然后发起单线程短连接的临时表请求。

  • 测试结果
    对比项 正常情况(无DDL操作) 开启优化 关闭优化
    每秒事务数(TPS) 42,000 40,000 <10,000

    压测过程中的秒级性能数据如下图所示(红线处为关闭DDL加速功能):

    阿里云RDS数据库Faster DDL-云淘科技

  • 测试小结

    原生MySQL在每次临时表线程退出时出现剧烈的性能抖动,TPS下降超过70%,开启优化之后性能影响降低至5%。

优化效果

Faster DDL加速功能支持RDS MySQL 5.6、5.7、8.0三个版本,但是不同版本支持加速的DDL类型不同,详情请参见下表。

分类 DDL操作 MySQL 5.6 MySQL 5.7 MySQL 8.0
In Place DDL 详情请参见MySQL 8.0 Online DDL Operations和MySQL 5.7 Online DDL Operations。
表空间管理 开关表空间加密。
释放或删除表空间。
丢弃表空间。
删除表 释放或删除表。
Undo操作 释放或删除undo表空间。
刷新表 刷新表及脏页。

Faster DDL解决的缺陷

Faster DDL完美解决了以下MySQL临时缺陷:

  • Bug #95582: DDL using bulk load is very slow under long flush_list
  • Bug #98869: Temp ibt tablespace truncation at disconnection stuck InnoDB under large
    BP
  • Bug #99021: BUF_REMOVE_ALL_NO_WRITE is not needed for undo tablespace
  • Bug #98974: InnoDB temp table could hurt InnoDB perf badly

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/154263.html

(0)
上一篇 2023年12月9日 下午6:55
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云云点播预置参数模板列表

    云点播支持使用参数模板代替复杂的参数集合,发起图片处理。针对不同处理场景,云点播预置了一批参数模板。 图片即时处理 一个图片即时处理模板代表了一组有序的操作集合。 预置图片即时处理模板 模板 ID 操作说明 操作参数 10 裁剪 类型:矩形裁剪宽度:360px高度:200px 20 裁剪 类型:矩形裁剪宽度:200px高度:400px 30 缩略 类型:指定…

    腾讯云 2023年12月9日
  • 腾讯云TDSQL-C MySQL版修改或删除连接地址

    本文为您介绍如何通过 TDSQL-C MySQL 版控制台修改或删除数据库代理连接地址。 前提条件 已 开通数据库代理。 修改数据库代理内网地址 1. 登录 TDSQL-C MySQL 版控制台,选择实例所属的地域。2. 在集群列表,选择已开启代理的集群,单击集群 ID,进入集群管理页面。3. 在集群管理页面,单击集群详情 > 详情,进入数据库代理管…

    2023年12月9日
  • 腾讯云TDSQL-C MySQL版新建规则模板

    本文为您介绍通过控制台新建规则模板。说明2023年09月25日起,规则模板与审计实例的关系由初始化调整为强关联,修改规则模板的内容会同步影响已绑定该规则模板的实例所应用的审计规则。规则内容的同一个参数字段中最多可配置5个特征串,多个特征串之间使用英文竖线“|”分隔。 操作步骤 1. 登录 TDSQL-C MySQL 版控制台。2. 在左侧导航栏选择数据库审计…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云ECS云服务器使用VNC登录实例-云淘科技

    无法使用Workbench和远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接实例时,您可以通过VNC远程连接方式登录实例,查看云服务器ECS操作界面的实时状态。 重要 自2023年7月10日起,远程连接工具VNC无需单独设置VNC登录密码,即可安全访问ECS实例。 阿里云在2023年7月10日对远程连接工具VNC完成安全升级,阿里云平台…

    阿里云服务器 2023年12月9日
  • 腾讯云云函数(SCF)并发概述-云淘科技

    并发是云函数在某个时刻同时处理的请求数。在业务其他服务可以支撑的情况下,您可以通过简单的配置实现云函数从几个并发到数以万计并发的拓展。 并发运行原理 在调用函数时,云函数会分配一个并发实例处理请求或事件。函数代码运行完毕返回后,该实例会处理其他请求。如果在请求到来时,所有实例都在运行中,云函数则会分配一个新的并发实例。云函数遵循一个并发实例同一时刻仅处理一个…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。