阿里云赵建伟:深度定制的高性能阿里云MySQL

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文根据阿里云资深数据库工程师赵建伟在“云栖大会上海峰会”专场《“互联网+”架构及实践专场-企业级信息系统云化演进之路》中的演讲整理。赵建伟在本演讲中主要为大家分享了阿里云的数据库服务和MySQL分支的深度定制情况。

4月15日直播

分享主题 :《阿里云RDS MySQL分支深度定制实战分享》

分享简介:阿里云RDS MySQL经过多年的积累,不断的进行性能优化,并定制了适合不同行业需求的功能,同时也向官方和社区贡献力量。本次主题主要介绍RDS MySQL分支的深度定制,包括功能扩展、资源管控、性能优化、数据安全、行业解决方案等。


报名地址https://yq.aliyun.com/webinar/join/11


欢迎积极报名,与赵建伟在线互动~



2016云栖大会上海峰会于2016.1.20日在上海科技馆顺利举办。本文根据阿里云资深数据库工程师赵建伟在“云栖大会上海峰会”专场《“互联网+”架构及实践专场-企业级信息系统云化演进之路》中的演讲整理。赵建伟在本演讲中主要为大家分享了阿里云的数据库服务和MySQL分支的深度定制情况。下面是具体内容。

 

 

阿里巴巴的MySQL是全世界最强的MySQL,阿里巴巴拥有全世界少数几支MySQL的内核团队,而且它是数一不数二的。公有云做不了假,随便跑任何的测试工具来测阿里云的MySQL,就知道我们是领先的。

 

阿里云的数据库服务已经有几个年头了,整个历程从最开始的MySQL,只要有用户需求或者大家使用上面有习惯的,我们都会以高节奏的频度来发布我们数据库的服务。现在大概平台上有数十万的用户数据库实例,从这个分布情况来看,MySQL仍然是一个用户基础比较广的而且使用深度比较高的,我们在MySQL上面也做了非常多的定制功能来满足大家的需求。

 

 

RDS MySQL分支介绍

 

22256e1df750dfda8981858f4775ef2033cdbb30

1 RDS MySQL分支

 

我们的MySQL分支有一个小海豚的LOGO,是专属于阿里云RDS的,我们今年会推出MySQL 5.7的新功能,小版本通常来说都会有一些功能的添加,随着官方的小版本的发布我们的节奏会紧跟着小版本。我们也是拥抱开源的心态,我们对现有的开源分支会从社区拿红利过来,对于一些用户喜闻乐见的或者是我们觉得非常好的会直接拿过来。同时我们索取了之后也会贡献出来,2015年阿里巴巴和谷歌、FacebookTwitter四家公司成立了一个WebScaleSQL的分支。

 

功能扩展

 

bef582e7548e0ae939ddfd8d6ad9d123f559d3fb

2功能扩展实例

 

功能扩展上我们会有一些新的语法,这些语法是在使用的过程当中切身体会到的,或者是我们认为过程当中有一些需求的,图2中标红了一些新添加的,前两个想要达到的效果是:大部分情况下我们更新了一条记录,随后我们就想知道这条记录查询出来是什么样的,我们把它组成一条语句,这样在大规模数据部署的时候,这条语句为集团省下来的数据就已经非常可观了。然后是语句超时和DDL fast fail,这个响应变慢带来的连锁反应或者是让你的应用持续性的不可用,或者是崩盘,,它要解决的就是雪崩效应。


功能增强的部分有两个,隐含主键和并行复制。备库一直跟不上主库,我们想要解决的一是隐含主键,如果用户在创建这张表的时候没有给索引,我们会帮用户创建一个隐含索引,这个隐含索引用户是看不到的,不影响你任何的语法和任何的使用,但是它在备库恢复的时候是可以解决大部分问题的。图2中两幅图是我们最早上线的时候没有应对到的一些问题,很多用户在主库上面高并发压测或者是什么原因导致备库一直跟不上,上几万的实例当中也就零星几个,这几个是额外的问题。

 

资源管控

 

4cdeb6c0321f8da9d8be81cd1bc2ba50879531d7

3更丰富的Metrics

 

表和索引的统计:在服务客户的时候遇到两个极端,有一部分用户建表的时候没有一个索引,另外一部分用户会建很多索引,这是两个极端。没有索引查询的效率不高,每一个都建索引也会浪费。我们可以告诉用户这一段时间之内你的索引没有被SQL使用过你可以放心删除。

 

线程,SQL使用内存统计:我们现在提供的最小规格的是960兆内存的实例,960兆作为一个数据库服务的服务器来说内存肯定是不够用的,我们会有针对线程和SQL的内存统计,你可以很清晰的从这个里面查询出来然后有的放矢。

 

SQL使用IO资源统计:这是以当前的SQL一条语句或者其他的语句查询出来,然后使用了多少逻辑图、物理图。

 

SQL使用临时空间统计:这个可以让大家很清楚对于所有压力来源的SQL的使用资源的统计。

 

2531f5adc6955ea50d9d74a1b2bad7667b2f34db

4更完善的SQL审计

 

SQL审计是我们提供出来的一个额外的,你所有的SQL都可以把一些慢SQL和各类统计的维度来对你的SQL进行审计。

 

性能优化

 

b830d94cef32a5af1955ae4f38c385aa1cf432d0

5 Aliyun RDS MySQL vs XXCloud MySQL

 

几个比较典型的性能优化:

  • Redo组提交;
  • 还有锁拆分;
  • 只读事务优化;
  • Muti Redo buffer优化。

从图5中的比较看出,我们现在还是一个绝对领先的地位。我们团队针对每一次的MySQL发布、每一次优化都会去跟同类产品做比对。

 

数据安全

 

78ec611c36f165da828fddb373a36e681f9c854b

6 InnoDB数据文件加密

 

对于企业来说,数据库的数据是企业的生命线,我们希望在数据库的层面上对现有的数据进行一次加密。如果你使用InnoDB的引擎,我们会对数据文件进行加密,加密算法也是国际标准的加密算法。整个一套加密后,你的数据如果丢失,任何人拿到这一部分必须能够到KMS把密钥明文拿出来,更重要的是要把分支的代码拿到,否则解不出来这些数据。

 

 

3a934d10890c7946e4c6be7f80b735e58b0f5c4b

7 SQL Firewall保护

 

我们希望增加一个SQL白名单的配置,比如说图7中一个正常的查询语句过来,如果你在这个白名单里面是可以通过查询的,如果说你伪装的话,这个SQL发出来其实就是想把你的数据拖出来,不在这个白名单里面就会被拒绝掉,这个是在中间层加的一层防护。我们在用户使用的过程中是最大限度的放开给大家使用的,比如说你今天要发布一个新业务,你可以在发布随后的两天把监测功能打开,随后你在第三天的时候把白名单的功能切换成保护模式,如果不在这个白名单的就拒绝访问,这就会应对拖库的场景。

 

行业解决方案

 

a54855ffb9fc0dd5d4635f37dd859f770f7d8302

8防闪断功能 --游戏场景

 

游戏最让人讨厌的地方就是从服务器掉线了,闪断的这个情况可以发生在链路层的每一层。现在大部分的游戏公司都已经切换到Proxy这个平台上去应对闪断的问题。

 

4c6b14555681106113669c968d2da8d8649dc5f3

9 Double Binlog保护  --金融场景

 

 

金融行业用户希望数据是零丢失的,而且持续可用,我们就在原来的基础上再增加一个SQL。我们希望备库当中有一个人能够参与,这样的话我们可以保证在现有的情况下应对自然灾害或者这一系列的保证数据是零丢失的,而且持续可用。

 

5084ec33c4a793a4fc42203b3edead8e9539ce21

10秒杀优化  --电商场景

 

秒杀场景在电商行业是经常会遇到的,双十一也会有。其实很简单,秒杀对应到数据库里面想要做的事情就一条,同一款商品在数据库里面会有一条库存量,这是一个很简单的减库存的场景。我们现有的更新的锁的力度最小只能到行,就比如过图10中所示的丁字路口,比较并行的就不要去挤,要去排队。我们唯一能做的就是尽可能的在前面排队,进到队列之后尽可能的快点出去不要进到后端,因为越到后端开销越大。我们可以把这些语句加上Hint,就是说只要更新到减库存之后你的应用不要再做任何处理,我帮你提交就行了,快进快出。还有InnoDB层的排队,语句返回退化成事务提交,也就是我上一个事务没有提交你就不要进来抢资源了,因为你抢到了也是被堵塞住。

 

7924d9a16195ac7972873cf0743255fa18fbd886

11海量数据场景压缩---对比

 

 

我们推出的TokuDB引擎就是尽可能的帮用户压缩数据,图11是一个物联网的例子,因为物联网的特点就是收集的数据踩点比较多,所以它的数据量比较大,我们这个压缩比是大于5倍的。另外我们也支持column压缩,可以自定义column压缩和text/blob高压缩比。

 

 

IO优化有一个统计分析的场景。如果今天老板让你帮他统计一下你们去年、前年的订单有多少,这个统计功能很简单,全表扫描一下就出来了,但是它所带来的问题非常巨大,因为内存有限。如果在业务高峰期使用buffer  pool就会被污染掉了。因为你已经知道你的数据块访问之后就不再访问了,因为你只想做一个统计分析,所以这次访问直接淘汰出去,就是不走正常的算法,防止buffer  pool被污染掉。然后是IOPS限速,防止个别SQL使IOPS过载。




2016云栖大会上海峰会回顾专题(含演讲视频):http://yunqi.aliyun.com/2015/shanghai/review.html

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
369 3
|
7天前
|
存储 运维 关系型数据库
高性能 MySQL 第四版(GPT 重译)(四)(2)
高性能 MySQL 第四版(GPT 重译)(四)
42 4
|
7天前
|
存储 缓存 关系型数据库
高性能 MySQL 第四版(GPT 重译)(三)(1)
高性能 MySQL 第四版(GPT 重译)(三)
53 4
|
27天前
|
存储 关系型数据库 数据库
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
迎峰而上:汇联易依托阿里云RDS通用云盘,加速业务智能化升级
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
|
1月前
|
弹性计算 关系型数据库 MySQL
阿里云MySQL云数据库优惠价格、购买和使用教程分享!
阿里云数据库使用流程包括购买和管理。首先,选购支持MySQL、SQL Server、PostgreSQL等的RDS实例,如选择2核2GB的MySQL,设定地域和可用区。购买后,等待实例创建。接着,创建数据库和账号,设置DB名称、字符集及账号权限。最后,通过DMS登录数据库,填写账号和密码。若ECS在同一地域和VPC内,可内网连接,记得将ECS IP加入白名单。
436 2
|
1月前
|
SQL 关系型数据库 MySQL
阿里云mysql数据库价格购买和使用教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,通过选择配置、地域和可用区完成购买。创建数据库和账号,分配权限。使用DMS登录数据库,进行管理操作。确保ECS与RDS在同一地域的VPC内,配置白名单实现内网连接。详细步骤见官方文档。
631 1
|
1月前
|
关系型数据库 MySQL 数据库
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
【2月更文挑战第29天】使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
223 2
|
1月前
|
SQL 关系型数据库 MySQL
购买阿里云RDS实例
购买阿里云RDS实例
165 2
|
30天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 分布式计算 网络协议
阿里云服务器内存型r7、r8a、r8y实例区别参考
在阿里云目前的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y这几个实例规格,相比于活动内的经济型e、通用算力型u1实例来说,这些实例规格等性能更强,与计算型和通用型相比,它的内存更大,因此这些内存型实例规格主要适用于数据库、中间件和数据分析与挖掘,Hadoop、Spark集群等场景,本文为大家介绍内存型r7、r8a、r8y实例区别及最新活动价格,以供参考。
阿里云服务器内存型r7、r8a、r8y实例区别参考