大型企业数据库服务首选,AliSQL这几大企业级功能你了解几个?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL代表了开源数据库的快速发展,从2004年前后的Wiki、WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始阿里云RDS for MySQL为成千上万家客户提供可靠的关系数据库服务,积累了来自内外部功能、性能、安全方面的众多需求,培养了一支强劲的MySQL研发团队,并打造了面向企业场景的AliSQL分支,高效演进并稳定地服务着内外部关键业务场景。

MySQL代表了开源数据库的快速发展,从2004年前后的Wiki、WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始阿里云RDS for MySQL为成千上万家客户提供可靠的关系数据库服务,积累了来自内外部功能、性能、安全方面的众多需求,培养了一支强劲的MySQL研发团队,并打造了面向企业场景的AliSQL分支,高效演进并稳定地服务着内外部关键业务场景。

让我们来一起看一下AliSQL中面向企业场景的设计及功能

1丨MySQL 80 Compatiable

MySQL 80有5个非常好的企业级功能,来逐一看一下:

🔸Atomic DDL,MySQL 80去掉了表结构frm文件,实现了元数据信息字典化,可以保证DDL操作处理或回滚干净,避免了表删除不干净的情况。

🔸Instant Add Column,元数据字典化后,向表最后面加列(无默认值)时,可以只更改数据字典,而不需要更改表数据,实现了极快速的加列。

🔸Window Function,窗口函数可以用来快速实现复杂的报表,在许多企业应用场景中都会出现。

🔸Temp Engine,执行特别复杂的SQL时,需要用到内存之外的临时空间,以前版本会动态地创建和删除文件,而在MySQL 80中,使用了集中式的Temp Engine,避免不停地创建和删除文件,有效降低了文件系统的压力。

🔸Hash Join,MySQL 8018中实现了Hash Join,可以加快多表(三表)以上关联的SQL性能,在企业场景中由于业务逻辑复杂,多表关联是常态,绝对的企业级功能。

我们在2019年推出了基于MySQL 80版本的AliSQL版本,远远领先于同行。

2丨Dynamic Thread Pool

企业级场景(包括互联网与非互联网场景)的商业数字化程度越来越高,应用场景越来越丰富,RDS数据库如何在有限资源(4c/8c规格,云上弹性降底企业成本)的情况下提供高质量服务,会面临以下挑战:

🔸如何在有限的资源下,支持更多的数据库连接数?

🔸如何支持更高的短连接能力?

🔸如何在有限的资源下,提高资源的使用效率,提升性能?

🔸如何进行并发控制或隔离,保证核心业务逻辑的稳定性?

Dynamic Thread Pool可以很好地解决上述问题,

🔸采用Listener & Worker机制,将所有请求放到Worker队列中,由共享的Worker线程来执行不同用户的请求,从而不需要每个客户端会话都创建一个后台线程(非Dynamic Thread Pool)来执行请求,比如1000个客户端连接发起请求,服务器端只需要数十个Worker线程即可,而不需要创建1000个线程,从而可以在有限资源内创建更多的连接。

🔸由于每个连接后面并不对应固定的线程,创建新连接时没有线程的操作,因此建立新连接的成本大大降底,从而可以提供更高和更稳定的连接创建能力。

🔸通过控制了有限资源内的线程数,减少了线程切换,有效降低了SYS CPU的使用,提升了CPU的资源使用效率。在高并发的sysbench point select测试中,Dynamic Thread Pool可以提升10%左右的性能;在低并发时,Dynamic Thread Pool可以动态切换回专用模式,即每个连接都有专用的Worker对应,从而保证高低并发下都有极好的性能。

🔸在数据库中有读写操作,SQL操作也可以分为简单操作和复杂操作,为了防止相互影响,Dynamic Thread Pool设计了多个队列,按SQL的操作成本将SQL进行分类,各自进入不同的队列,并在队列上进行并发的控制,从而可以隔离不同类型操作的相互影响。比如说核心业务逻辑中都是简单查询,新建应用未经评审的复杂SQL就不会影响核心逻辑。

🔸Dynamic Thread Pool可以动态启停,不需要重启数据库实例。这是AliSQL Dynamic Thread Pool一个非常重大的技术创新与突破。

Dynamic Thread Pool已经在RDS 5.6/5.7/8.0版本上线,并已经默认开启,所有用户和客户都可以受益。TPCC模型最接近企业核心业务场景,在1024或2048客户端并发的TPCC测试中,Dynamic Thread Pool可以提升50%-100%左右的TpmC,并节约10%到20%的CPU资源消耗,给阿里云所有客户带来实实在在的技术红利。

3丨Index Mutex Tuning

TPCC模型最接近企业核心业务场景,对此场景的优化可以让企业应用受益。在TPCC的压力测试中,发现Index的锁非常重,在节点分裂时会阻塞所有的其他操作。AliSQL对此进行了优化,有效地降低了压测过程中,索引节点分裂的成本,大大地提升了TPCC场景的处理能力。在全内存的测试中,单机达到了39W的TpmC,相对于原生版本提升35-50%不等(大规格测试,5.6提升35%、5.7提升40%、8.0进升45%)。

img

此优化已在RDS 56/57/80上同步优化发布上线。

4丨TDE & SM4

RDS 5.6/5.7/8.0都已经全线支持,并且支持SM4国密算法,可以确保客户数据的安全。

5丨Performance Insight

应用侧的SQL优化对系统及业务的优化至关重要,原生的MySQL中缺少行之有效的监控数据,AliSQL结合不同数据库的经验,并结合内部外部客户的需求,在SQL性能这块做了丰富的扩展,包含以下五个方面的扩展:

🔸table_stats,记录每个表增删除改查的行数,可以快速地了解现有系统中的数据存取行为,判断业务的核心表,判断哪些表适合来作缓存处理。

🔸index_stats,记录用到的索引以及索引被使用的频率,可以快速地了解索引的使用情况,判断哪些索引是多余的,判断哪些索引是核心的索引。

🔸Performance Point,记录了每个SQL的细粒度性能数据,包括SQL语句的时间(包括消耗时间、执行时间、Server层MDL锁的时间、事务锁的时间)、SQL IO的信息(包括这条SQL引起的数据读、数据写、日志生成、内存访问、物理读写的量及IO时间)、以及内核层面的锁(包括Mutex、RW Lock)的次数和时间。很容易找到值得优化的SQL语句,如果有一定的源代码能力,也可以分析和改进MySQL的锁机制。

🔸Performance Agent,使用内置Daemon程序,在同一时间点收集不同唯度(CPU、内存、网络、磁盘IO、Server、InnoDB、Linux Kernel、File System)的关键性能数据,每秒收集一次,以格式化文本方式在后台记录,便于事后进行性能分析,同时也是内存表的方式提供访问,方便客户直接使用Grafana等工具来展示RDS数据库性能曲线。

img

🔸IO_STATISTICS,记录实例级各种不同IO的总量及时间,默认每2秒一个值(可配置),可以直接使用Grafana等工具来展示。

在仔细分析原生Performance Schema后,AliSQL中增加了这些额外的性能相关的数据,如实地反映了系统的运行情况,方便我们进行事后性能问题诊断,也方便了客户进行SQL性能分析,也可以让第三方基于这些性能数据来为客户提供更好的性能优化服务。

6丨Async File Purge

在文件系统中删除一个特别大的文件(Drop Table/Partition、Truncate Table/Partition)时,可能会锁定整个文件系统,导致同一个文件系统上的其他操作无法进行,阻塞整个实例。AliSQL中对这种行为进行了优化,当接到删除表或分区的操作时,会记一个文件异步清理的任务,将表或分区的操作先做完,然后由后台线程以相对温和的方式进行清理。其原理是将大文件一步一步变小,到某个安全大小后,才彻底删除文件。

7丨Slow Log Rotate

某些业务场景下,会产生大量的慢SQL语句,会被记录在慢日志中,而原生的MySQL一直使用单个文件机制会一直保持Slow Log文件打开,导致文件变得特别大(可高在上百GB),需要在关闭MySQL实例的情况下,才能对Slow Log文件进行维护,非常地不友好。

AliSQL对此作出了改进,设计了Slow Log切换机制,可以定时或到指定大小后进行切换(切换指令由外部触发),避免需要重启数据库实例来维护Slow Log文件(比如释放Slow Log空间)。其间还修复了以CSV格式存放Slow Log时,SQL执行时间范围超过35天(通常是Binlog Dump命令)引起的损坏问题。

8丨SQL Outline

SQL Hint是非常有效的优化手段,AliSQL对SQL Hint做了功能扩展,可以在运行过程中将SQL计算中的路径信息用相应的SQL Hint进行持久化保存,以保证执行计划的稳定性。可以有效应对以下场景下的SQL执行计划变更:

🔸数据库版本升级,优化器行为会发生变化,SQL计算计划可能变好也可能变坏。

🔸DDL操作,新建索引后,会导致原有的SQL执行计划发生变化。

🔸统计信息发生变化,重新收集或人工设置后,SQL执行计划可能发生变化。

对于核心业务的SQL,应当使用SQL Outline进行固化,避免SQL执行计划变坏。

AliSQL还提供API进行SQL Hint编辑,即可以手工给SQL加一个Hint,进行透明的SQL优化,可以在无法更改应用程序代码的情况下进行SQL优化。并在此基础上,与AliSQL其他的优化功能进行集成,比如Statement Queue、Query Cache(研发中)等,可以通过在SQL Outline中指定Hint来启用Statement Queeu的并发控制,或启用Query Cache,实现对应用透明的SQL优化。

9丨Binlog XA Tuning

MySQL的逻辑日志(Binlog)给数据订阅带来了极大的便捷性,但也给性能带来了负面影响。在服务客户的过程中,我们发现企业场景对性能的要求越来越高,便对启用Binlog后的事务提交机制进行了重大的技术突破,在不影响Binlog的前提下,去除了XA机制带来的所有负面性能影响,相较于原生的MySQL,事务处理性能提升将近一倍。更实现了事务提交的Pipeline机制,交由Dynamic Thread Pool的线程去回复用户事务提交结果,进一步降底了线程池的线程数,提升了系统处理效率。

10丨DDL Recycle Bin

在MySQL中DDL语句是无法回滚的,因此Drop/Truncate表或分区的操作会变得极期危险,在商业数据库中也是如此。

Oracle在10g中加入了回收站的功能,可以将Drop/Truncate的表或分区先放到回收站中,后续根据空间的使用情况,按先进先出的策略自动回收。这样就可以在Drop/Truncate误操作手,从回收站中快速恢复数据,而不需要进行实例基于时间点的恢复来找回误操作的表,AliSQL在8.0上也实现了此回收站功能。

AliSQL还有其他的企业级功能,例如Sequence引挚、Statement Queue等,在这里不一一详细解释。

从业务中找需求,从技术中找需求,从运行维护中找需求,从合作伙伴中找需求,所有的需求方都是我们的客户,一直致力于让AliSQL更加开放更加面向企业级应用。

大型企业数据库服务首选
专属主机组RDS MySQL服务重磅发布!

👇

img

1月9日15:00 — 17:00

RDS专属主机组和ECS专有宿主机

举办联合发布会!

扫码立即预约!

(需登陆阿里云账号哦!)

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 数据库连接
|
7天前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
7天前
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
9天前
|
SQL 关系型数据库 网络安全
Navicat Premium 17 最新版下载与配置:5分钟完成企业级数据库工具部署
Navicat Premium 17 是一款支持多种主流数据库(如 MySQL、Oracle、PostgreSQL 等)的多数据库管理工具,提供可视化数据建模、SQL 编辑和数据同步等功能。试用版提供 14 天全功能体验,商业版支持跨平台使用。安装环境要求 Windows 10/11 或 macOS 12.0+,最低配置为 4GB 内存。下载并解压安装包后,按步骤启动安装程序、接受许可协议、自定义安装路径并完成安装。首次运行时需激活许可证并配置数据库连接。常见问题包括无法写入注册表、试用期续费及连接数据库权限问题。高级功能涵盖 SSH 通道加速、自动化任务调度和性能调优建议。
83 19
|
11天前
|
存储 NoSQL 关系型数据库
Apifox与Apipost数据库连接功能详细对比,让接口管理更高效!
Apipost 更加全面:无论是关系型还是非关系型数据库,它都为开发者提供了一站式解决方案,非常适合数据库架构复杂的大型项目。相对来说,Apifox偏重关系型分析和管理:若项目主要需求在于管理关系型数据库,而对非关系型的依赖较小,Apifox倒是可以应付。
39 2
|
14天前
|
人工智能 Cloud Native 多模数据库
实力见证!数据管理服务DMS、云原生多模数据库Lindorm荣获“2024技术卓越奖”
实力见证!数据管理服务DMS、云原生多模数据库Lindorm荣获“2024技术卓越奖”
|
16天前
|
数据管理 关系型数据库 MySQL
数据管理服务DMS支持MySQL数据库的无锁结构变更
本文介绍了使用Sysbench准备2000万数据并进行全表字段更新的操作。通过DMS的无锁变更功能,可在不锁定表的情况下完成结构修改,避免了传统方法中可能产生的锁等待问题。具体步骤包括:准备数据、提交审批、执行变更及检查表结构,确保变更过程高效且不影响业务运行。
36 2
|
21天前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
37 0
|
21天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
39 0
|
2月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!

热门文章

最新文章