AliSQL是阿里云深度定制的独立MySQL分支,除了社区版的全部功能外,AliSQL提供了相似于MySQL企业版的诸多功能,如企业级备份恢复、线程池、并行查询等,而且AliSQL还提供兼容Oracle的能力,如sequence引擎等。RDS MySQL使用AliSQL内核,为用户提供了MySQL全部的功能,同时提供了企业级的安全、备份、恢复、监控、性能优化、只读实例等高级特性。html
1月9日,依托AliSQL内核的专属主机组RDS MySQL服务即将重磅发布!
时间: 1月9日15:00 — 17:00
主题: RDS专属主机组和ECS专有宿主机 联合发布会
详情:https://promotion.aliyun.com/ntms/act/mysqlzhuanshuzhuji.html
预定直播!:https://yq.aliyun.com/live/1858
(需登录阿里云帐号哦!)mysql
MySQL表明了开源数据库的快速发展,从2004年先后的Wiki、WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始阿里云RDS for MySQL为成千上万家客户提供可靠的关系数据库服务,积累了来自内外部功能、性能、安全方面的众多需求,培养了一支强劲的MySQL研发团队,并打造了面向企业场景的AliSQL分支,高效演进并稳定地服务着内外部关键业务场景。算法
让咱们来一块儿看一下AliSQL中面向企业场景的设计及功能。sql
MySQL 8.0有5个很是好的企业级功能,来逐一看一下:数据库
咱们在2019年推出了基于MySQL 8.0版本的AliSQL版本,远远领先于同行。缓存
企业级场景(包括互联网与非互联网场景)的商业数字化程度愈来愈高,应用场景愈来愈丰富,RDS数据库如何在有限资源(4c/8c规格,云上弹性降底企业成本)的状况下提供高质量服务,会面临如下挑战:安全
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资源消耗,给阿里云全部客户带来实实在在的技术红利。服务器
TPCC模型最接近企业核心业务场景,对此场景的优化可让企业应用受益。在TPCC的压力测试中,发现Index的锁很是重,在节点分裂时会阻塞全部的其余操做。AliSQL对此进行了优化,有效地下降了压测过程当中,索引节点分裂的成本,大大地提高了TPCC场景的处理能力。在全内存的测试中,单机达到了39W的TpmC,相对于原生版本提高35-50%不等(大规格测试,5.6提高35%、5.7提高40%、8.0进升45%)。网络
此优化已在RDS 56/57/80上同步优化发布上线。
RDS 5.6/5.7/8.0都已经全线支持,而且支持SM4国密算法,能够确保客户数据的安全。
应用侧的SQL优化对系统及业务的优化相当重要,原生的MySQL中缺乏行之有效的监控数据,AliSQL结合不一样数据库的经验,并结合内部外部客户的需求,在SQL性能这块作了丰富的扩展,包含如下五个方面的扩展:
在仔细分析原生Performance Schema后,AliSQL中增长了这些额外的性能相关的数据,如实地反映了系统的运行状况,方便咱们进行过后性能问题诊断,也方便了客户进行SQL性能分析,也可让第三方基于这些性能数据来为客户提供更好的性能优化服务。
在文件系统中删除一个特别大的文件(Drop Table/Partition、Truncate Table/Partition)时,可能会锁定整个文件系统,致使同一个文件系统上的其余操做没法进行,阻塞整个实例。AliSQL中对这种行为进行了优化,当接到删除表或分区的操做时,会记一个文件异步清理的任务,将表或分区的操做先作完,而后由后台线程以相对温和的方式进行清理。其原理是将大文件一步一步变小,到某个安全大小后,才完全删除文件。
某些业务场景下,会产生大量的慢SQL语句,会被记录在慢日志中,而原生的MySQL一直使用单个文件机制会一直保持Slow Log文件打开,致使文件变得特别大(可高在上百GB),须要在关闭MySQL实例的状况下,才能对Slow Log文件进行维护,很是地不友好。
AliSQL对此做出了改进,设计了Slow Log切换机制,能够定时或到指定大小后进行切换(切换指令由外部触发),避免须要重启数据库实例来维护Slow Log文件(好比释放Slow Log空间)。其间还修复了以CSV格式存放Slow Log时,SQL执行时间范围超过35天(一般是Binlog Dump命令)引发的损坏问题。
SQL Hint是很是有效的优化手段,AliSQL对SQL Hint作了功能扩展,能够在运行过程当中将SQL计算中的路径信息用相应的SQL Hint进行持久化保存,以保证执行计划的稳定性。能够有效应对如下场景下的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优化。
MySQL的逻辑日志(Binlog)给数据订阅带来了极大的便捷性,但也给性能带来了负面影响。在服务客户的过程当中,咱们发现企业场景对性能的要求愈来愈高,便对启用Binlog后的事务提交机制进行了重大的技术突破,在不影响Binlog的前提下,去除了XA机制带来的全部负面性能影响,相较于原生的MySQL,事务处理性能提高将近一倍。更实现了事务提交的Pipeline机制,交由Dynamic Thread Pool的线程去回复用户事务提交结果,进一步降底了线程池的线程数,提高了系统处理效率。
在MySQL中DDL语句是没法回滚的,所以Drop/Truncate表或分区的操做会变得极期危险,在商业数据库中也是如此。
Oracle在10g中加入了回收站的功能,能够将Drop/Truncate的表或分区先放到回收站中,后续根据空间的使用状况,按先进先出的策略自动回收。这样就能够在Drop/Truncate误操做手,从回收站中快速恢复数据,而不须要进行实例基于时间点的恢复来找回误操做的表,AliSQL在8.0上也实现了此回收站功能。
AliSQL还有其余的企业级功能,例如Sequence引挚、Statement Queue等,在这里不一一详细解释。
从业务中找需求,从技术中找需求,从运行维护中找需求,从合做伙伴中找需求,全部的需求方都是咱们的客户,一直致力于让AliSQL更加开放更加面向企业级应用。
大型企业数据库服务首选,专属主机组RDS MySQL服务重磅发布!
时间: 1月9日15:00 — 17:00
主题: RDS专属主机组和ECS专有宿主机 联合发布会
观看方式:当即预定请戳下方连接??
本文做者:黄忠
本文为阿里云内容,未经容许不得转载。