MySQL的未来在哪?

阿里云 MySQL&MariaDB 数据库产品结合开源社区,提供了稳定、可靠、便捷、弹性的在线数据库服务,帮助全球企业客户进行数字化转型。MySQL发展经历了一系列变化,从Sun到Oracle,发展也经过了几个阶段。MySQL从5.7版本开始走上了代码重构之路,这为MySQL未来10年的发展奠定了坚实基础,而未来MySQL将和云计算碰撞出什么样的火花?本文中,阿里云研究员吕漫漪将为大家分享MySQL的前世今生。

MySQL的过去

对于MySQL而言,其最大的发展变化就是被Sun收购,但是Sun原本就有数据库团队,MySQL被收购之后两个团队也合并了起来。MySQL的团队懂得社区并且有激情,而Sun的团队懂得怎样软件工程化,懂得保证质量和产品迭代,因此团队合并之后对于MySQL的改变很大。在这之后Sun被Oracle收购,这又是另外一个转折点,Oracle不仅给了MySQL团队很大自由,也投入了很多人力和物力。这也保证了2013、2015以及2018年,每间隔2年多的时间就能推出一个较为成熟的新版本,而在2018年之后其迭代周期就会迅速变短,因为朝着物联网方向发展,大概每三个月就会迭代一次。

近十年中,Oracle做了很多很好的事情,其中有一点事情虽然很少谈到,但是对于之后的发展却极为重要,那就是——代码重构。大家都希望完善功能,提高性能,但是很少有人做了代码重构。所谓代码重构就是在不改变功能的前提下,改善代码结构,提高可读性和可扩展性。这件事情虽然说起来简单,但是做起来难,特别是在进行决策的时候。MySQL5.6版本的时候决定进行代码重构,这是因为,Oracle增加了很多人力进入MySQL项目,但是当时的系统却存在很多Bug,这使得代码维护变得极为困难,使很多人力用于维护旧代码而不是增加新功能。此外,还使新功能的开发周期变得特别长,并且容易发生错误。当然,因为有很多错误,并且代码没有注释和文档,使新人接手项目变得困难。

MySQL的现状

因此为了保证长期的市场领先地位,MySQL必须要进行代码重构。在最开始,主要是将解析、优化、查询等步骤进行拆分,方便找到存在问题的模块。此外, 还实现了一些工具,来帮助检测Bug。MySQL5.7中的优化器部分,30%的代码是重写的,而在8.0中解析器的50%都是重写的,可见投入很大。MySQL将编程语言都统一到C++,编译器都使用最新版本,代码规格采用谷歌的,统一了300人的开发团队的代码标准。代码重构这件事情可能是对于未来10年的MySQL发展所做的最重要的一件事情。这是因为有了高质量的代码,才能够快速推出新的功能,降低维护成本,使得新人更快上手项目。

解析器在重构之前的结构就像是一盘意大利面,非常混乱,重构之后就变得极为清晰。当重构完解析器之后发现,以前很多解析器的Bug都消失了,此外,增加复杂语法的效率也得到了极大的提升,节约了大量时间。此外,还做了多核性能提高,这也是硬件的趋势,虽然每个内核不会更快,但是数目却会增加。在重构之后,读性能提高了三倍,写的性能也有很可观的的提高。

MySQL另外一个大的改变就是测试方面,如今的用户更多的是企业级用户,他们更多关注于更高的稳定性。对于数据库而言,最重要的永远都是稳定性,功能和性能是其次的。对于测试方法而言,要求对于新的功能,测试代码覆盖率达到95%,所有的开发人员在提交代码的时候都要进行单元测试。在实现新功能的时候,需要开发和测试同时进行,整体测试之后才能将代码推入主干,性能测试,每天都会测试,此外有重大更新推入主干时需要进行完整的性能测试,保证性能不会退化。所有测试都自动化,不需要人为测试。

功能上的最大亮点就是在MySQL5.7版本中推出了JSON数据类型。虽然MySQL一直都是关系型数据库,但是发现自己的用户不仅仅需要关系型数据库,也需要支持非结构化数据。因此MySQL需要和客户自己成长,因此在5.7版本中加入了JSON数据类型,也推出了很多适于JSON的函数,因此用户可以选择使用类似于MongoDB的Document的API,用户可以将MySQL当做NoSQL来使用,而不用关心底层的原理,而且还实现了NoSQL所无法比拟的功能。

MySQL5.7功能中的另外一个亮点是“Group Replication”。这还是因为了除了互联网客户已经普遍地应用MySQL了,还有很多新增客户是企业级客户,他们要求高可靠性。组复制就是提高可靠性的一个功能,支持自动切换和多写,而多写也提升了高可用性,而且支持多写检测。这个功能当前只支持InnoDB,但很多新功能也支持InnoDB。

MySQL 8.0版本的新功能亮点就是自检表,对于客户而言做好的一点就是就是它支持原子操作的DDL,特别是在云上原子性的DDL发挥了决定的作用,因为很多操作都是自动操作,不可能让人手动修改DDL回滚时发生的错误。这一点对于云数据库而言非常重要。

此外,MySQL 8.0版本还提升了Information Scheme的性能。而无论是系统表还是普通表,都存放在InnoDB里面,因此其处理方式是一样的。对于开发者而言,有了数据自检,增加新的功能就会非常容易。

递归公用表表达式以及窗口函数都是非常复杂的SQL语句,在8.0中加入这两个语句缩短了MySQL和Oracle的差距,这会大幅度地降低数据库开发人员的开发时间。CTE主要用于对于存在层次等级的表中做递归的查询,这一功能在报表中非常常用。窗口函数则是用在分析型工作中的,比如分析每年、每季度的营收等。这些就是在MySQL8.0中新增的针对于数据库开发者的功能,帮助他们提升开发效率。

MySQL的未来

MySQL的未来其实只有一个字,那就是“云”。有预测称“在2020年,83% 的企业负载会转移到云上”,也就是说大部分线下场景会转移到云上,这对于MySQL而言既是一个机会也是一个挑战。MySQL需要在进行内核改动和优化,使其更适合在云上发展。

云上数据库架构存在着明显的转变,最为明显的就是计算层和存储层的分离。计算层不共享,但是存储层会变成共享存储。共享存储会达到云规模,也就是极大规模,能够支持所有用户,这样能够极大地节约资源。而这样的想法已经被PolarDB用到了。而企业级客户需要高可靠性,所以云上数据库需要演变成为可以跨机房的高可靠性,而且需要保证切换的过程中不丢失任何数据。在云上,很切换过程多操作需要自动化,需要保证AC之间的切换不丢失任何数据。云上数据库与传统数据库不同的是需要考虑到云上其他的服务,如何将数据库和备份、恢复、审计、安全以及监控等其他服务进行集成。

资源管理也是值得MySQL提升的部分,有些事务对于响应时间要求很高,这样可以优先处理响应时间较高的任务,而降低其他事务的优先级。此外,当内存不够的时候应该如何处理,不能使得服务宕机。可以进行回滚或者降低新的请求,来保证数据库的稳定状态。此外,还有想做的一件事情就是智能生成执行计划。因为一个SQL进来之后,先解析做优化,产生执行计划,这里需要改进的是在执行计划生成的时候需要考虑更多的事情,比如查询的响应要求以及内存限制。对于查询时间和空间的平衡需要客户自己决定。而现在的执行计划是由优化器自己决定的,在未来希望能够智能地生成执行计划。

回到企业级工作负载,其实MySQL用在互联网业务中是非常多的,但是众所周知互联网业务的查询往往比较简单,而企业级用户的查询相当复杂。MySQL目前对于简单数据库查询的性能非常好,在这一方面做了很多优化,而在复杂查询方面还可以做极多的优化,比如开启多个线程并行执行。同时可以在InnoDB层做更多的并行执行,比如Scan、条件过滤等,因此在复杂查询方面有无限的提升空间。

MySQL目前只用于OLTP,此外目前还以一个发展很快的趋势就是在线分析。未来,MySQL可能会同时支持事务性处理也会同时支持在线分析。在线分析和数据仓库不同,因为数据已经在手里了,可以用同一份数据做更多的分析。对于用户而言,所看到的就是一个数据库,但是所能够包含的功能确是难以想象的。

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码写成这样,老板把我开除了| IT 巨能唠

今天聊一聊遇到过的一些神逻辑代码&#xff0c;不一定很全&#xff0c;但真心让小编我自叹不如啊&#xff01;1、耍猴的最佳手段还记得 XX 手机的抢购活动么&#xff0c;抢购按钮的代码类似是这样的&#xff1a;<a href"javasript:alert(抢购结束!)">立即抢购&…

springboot+vue项目如何在linux上部署

在linux上部署项目&#xff0c;是我们实训项目作业的最后一步&#xff0c;此时我们的项目编码测试已经完成&#xff0c;接下来就需要在服务器上部署上线&#xff0c;那么如何部署上线&#xff0c;接下来我会在虚拟机上的CentOS7系统上实现部署&#xff0c; 一.下载JDK 因为我…

离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台&#xff0c;实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。 DataX本身作为数据同步框架&#xf…

MaxCompute Hash Clustering介绍

背景 在MaxCompute查询中&#xff0c;Join是很常见的场景。例如以下Query&#xff0c;就是一个简单的Inner Join把t1表和t2表通过id连接起来&#xff1a; SELECT t1.a, t2.b FROM t1 JOIN t2 ON t1.id t2.id; Join在MaxCompute内部主要有三种实现方法&#xff1a; Broadca…

上热搜了!“学了Python6个月,竟然找不到工作!”

在编程界&#xff0c;Python是一种神奇的存在。有人认为&#xff0c;只有用Python才能优雅写代码&#xff0c;提高代码效率&#xff1b;但另一部分人恨不能把Python喷成筛子。那么&#xff0c;Python到底有没有用&#xff0c;为什么用Python找不到工作&#xff1f;CSDN小姐姐带…

wget连接指定端口_新技能:wget参数有用过吗?

Wget是一个从网络上自动下载文件的工具&#xff0c;支持HTTP、HTTPS、ftp三个最常见的TCP/IP协议下载&#xff0c;并可以使用HTTP代理。“wget”这个名称来源于“world wide web”与“get”的结合。自动下载文件时什么意思&#xff1f;就是指&#xff1a;wget可以在用户退出系统…

数据脱敏平台-大数据时代的隐私保护利器

什么是数据脱敏 又称数据漂白、数据去隐私化或数据变形。是对核心业务数据中敏感的信息&#xff0c;进行变形、转换、混淆&#xff0c;使得对业务数据中的身份、组织等隐私敏感信息进行去除或掩盖&#xff0c;以保护数据能被合理、安全地利用。 数据脱敏的重要性 1&#xff09;…

数据中台送到家 企业数字化转型“输血”变“造血”

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘丹 责编&#xff5c;阿秃出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;如果有人要问2019年技术圈什么最热&#xff0c;“中台”绝对当仁不让&#xff0c;从观望到试水&#xff0c;很多公司做出了从 0…

虚拟服务器 端口管理,Apache服务配置虚拟主机(基于域名、端口、IP地址)与简单访问权限管理...

虚拟Web主机在同一台物理服务器中运行多个Web站点&#xff0c;其中每一一个站点并不独立占用一台真正的计算机。httpd支持的虚拟主机类型基于域名的虚拟主机基于IP地址的虚拟主机基于端口的虚拟主机构建虚拟主机------基于域名(1)安装bind、httpd服务。(2)进入named服务的主配置…

这个2684亿交易额里你贡献了多少?

戳蓝字“CSDN云计算”关注我们哦&#xff01;你们的朋友圈被天猫的双十一交易额刷屏了吗&#xff1f;1今天一大早醒来&#xff0c;按照往常翻了一下朋友圈&#xff0c;朋友圈都在晒天猫的双十一成交额&#xff0c;大家纷纷讨论你为这个交易额贡献了多少&#xff0c;小编表示自己…

大数据驱动业务决策,CDN实时日志重磅上线

背景 CDN是非常重要的互联网基础设施&#xff0c;用户可以通过CDN&#xff0c;快速的访问网络中各种图片&#xff0c;视频等资源。在访问过程中&#xff0c;CDN会产生大量的日志数据&#xff0c;而随着如今越来越复杂的网络环境变化&#xff0c;和业务的迅速增长&#xff0c;日…

oa服务器怎么修改域名,oa域名服务器配置

oa域名服务器配置 内容精选换一换当您想在Internet上通过域名访问您的网站时&#xff0c;可以通过本操作将域名托管至华为云的云解析服务&#xff0c;并为域名添加解析记录。例如&#xff0c;搭建一个网站服务器&#xff0c;采用IPv4格式的弹性IP地址。如果想要实现通过域名“e…

当S8遇上边缘计算:谈阿里云ENS对直播业务场景的支撑

近日&#xff0c;英雄联盟S8全球总决赛落下帷幕&#xff0c;中国战队IG零封FNC夺得冠军。这场比赛引起了国内网友的超高关注度&#xff0c;也给直播平台带来了不小的技术挑战。虎牙直播平台结合阿里云边缘节点技术方案&#xff0c;保障了总决赛当日7000万在线用户的低延时、稳定…

下行物理信道rs_5G物理层服务模型

物理层做为无线通信网络最重要的一层&#xff0c;提供了很多数据传输服务&#xff0c;如下&#xff1a;输通道上的错误检测并向高层进行指示; 传输信道上的FEC&#xff08;Forward Error Correction&#xff09; 编码和解码; Hybrid ARQ 软合并; 编码传输信道到物理信道的速率匹…

谷歌“夜莺计划”秘密采集数百万美国人健康隐私;联发科首款7nm产能的5G芯片;2019年天猫双11落幕,最终成交额2684亿……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周两次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go荣耀V30外观剑走偏锋&#xff0c;多维相机矩阵&am…

2135亿!2018 双11阿里数据库技术战报新鲜出炉

00:02:05 成交额超100亿 00:57:56 成交额超666亿 01:47:26 成交额超1000亿 15:49:39 成交额超1682亿 22:28:37 成交额超2000亿 2018新纪录2135亿 在年度大考面前 阿里数据库技术的小哥哥和小姐姐们 又一次为大众递交了诚意满满的答卷 让我们来看看 面对2分05秒破100亿的交易洪…

ftp 553 Could not create file

关闭SELinux&#xff1a;1、临时关闭&#xff08;不用重启机器&#xff09;&#xff1a; setenforce 0 2、修改配置文件需要重启机器&#xff1a; 修改/etc/selinux/config 文件 将SELINUXenforcing改为SELINUXdisabled 重启机器即可 …

阿里云发布Quick BIV3.0,人人都能轻松进行在线数据分析

提到BI与OLAP这两个概念&#xff0c;对于很多做数据库的技术人员来说并不陌生。BI随着时代的发展逐渐出现了新型BI和传统型BI的划分&#xff0c;从目前的发展程度来看&#xff0c;传统型BI正在慢慢地衰退&#xff0c;由于传统型BI存在从业门槛高&#xff0c;需要专业的IT人员来…

同事操作两个数据源保持事务一致_终于有人把分布式事务说清楚了

前言这篇文章将给大家介绍一下对分布式事务的一些见解&#xff0c;并讲解分布式事务处理框架 TX-LCN 的执行原理&#xff0c;错误之处望各位不吝指正。1. 什么情况下需要使用分布式事务&#xff1f;使用的场景很多&#xff0c;先举一个常见的&#xff1a;在微服务系统中&#x…

数据安全引担忧?get它,让你吃一颗“定心丸”

网络购物、在线外卖、远程教育、共享单车……如今&#xff0c;这些数字化的消费场景在个人生活中早已司空见惯。同时&#xff0c;在数字化浪潮下&#xff0c;越来越多的企业意识到大数据资产的价值&#xff0c;并试图推动其数字化转型。数据经济飞速发展&#xff0c;带来便捷和…