MySQL8新特性

MySQL在世界上最流行的开源数据库中添加了NoSQL和许多新的增强功能:
  • NoSQL Document Store为开发人员提供了开发传统SQL关系应用程序和NoSQL,无模式文档数据库应用程序的灵活性。这消除了对单独的NoSQL文档数据库的需求。
  • SQL 窗口函数,公用表表达式,NOWAIT和跳过锁定,降序索引,分组,正则表达式,字符集,成本模型和直方图。
  • JSON 扩展语法,新功能,改进的排序和部分更新。借助JSON表功能,您可以将SQL机制用于JSON数据。
  • GIS 地理支持。空间参考系统(SRS)以及支持SRS的空间数据类型,空间索引和空间功能。
  • 可靠性  DDL语句已成为原子性和崩溃安全性,元数据存储在单个事务性数据字典中
  • 可观察性  性能模式,信息模式,不可见索引,错误记录。
  • 可管理  性持久配置变量,撤消表空间管理,重新启动命令和新DDL。
  • 高可用性 InnoDB Cluster为您的数据库提供了一个集成的本地HA解决方案。
  • 安全性  OpenSSL改进,新的默认身份验证,SQL角色,分解超级特权,密码强度,授权。
  • 性能  比MySQL 5.7快2倍。
开发人员功能
MySQL 8.0提供了开发人员在SQL,JSON和GIS等领域所要求的许多新功能。开发人员还希望能够存储表情符号,因此UTF8MB4现在是8.0中的默认字符集。


NoSQL文档存储
MySQL Document Store为开发人员提供了最大的灵活性,使其可以开发传统的SQL关系应用程序和NoSQL,无模式的文档数据库应用程序。这消除了对单独的NoSQL文档数据库的需求。MySQL文档存储为无模式的JSON文档提供了多文档事务支持和完全的ACID合规性。
的SQL
视窗功能
MySQL 8.0在MySQL中提供了SQL窗口功能。类似于分组的聚合函数,窗口函数对一组行(例如COUNT或SUM)执行一些计算。但是,如果分组聚合将这组行折叠为单行,则窗口函数将对结果集中的每一行执行聚合。
窗口函数有两种形式:用作窗口函数的SQL聚合函数和专用窗口函数。
公用表表达式
MySQL 8.0在MySQL中提供[递归]公用表表达式(CTE)。非递归CTE可以解释为“改进的派生表”,因为它允许多次引用派生表。递归CTE是经过迭代构建的一组行:从初始的一组行中,一个过程派生出新的行,该行增长了该行,然后将这些新行再次馈送到该过程中,从而产生更多的行,依此类推,直到该过程不再产生任何行。
MySQL Workbench 8.0中的MySQL CTE和Window函数
等待和跳过已锁定
MySQL 8.0在SQL锁定子句中提供了NOWAIT和SKIP LOCKED替代方案。通常,当某行由于UPDATE或SELECT ... FOR UPDATE而被锁定时,任何其他事务都必须等待访问该锁定的行。在某些用例中,如果行被锁定,则需要立即返回,或者忽略锁定的行。使用NOWAIT的锁定子句将永远不会等待获取行锁。而是,查询将因错误而失败。使用SKIP LOCKED的锁定子句将永远不会等待获取列出表上的行锁。而是,锁定的行被跳过,根本不读取。
降序索引
MySQL 8.0为索引提供了降序支持。此类索引中的值以降序排列,我们将其向前扫描。在8.0之前的版本中,当用户创建降序索引时,我们创建了一个升序索引并向后扫描。一个好处是,前向索引扫描比后向索引扫描更快。
分组
MySQL 8.0提供了GROUPING(),SQL_FEATURE T433。GROUPING()函数将超聚合行与常规分组行区分开。GROUP BY扩展(例如ROLLUP)会产生超集合行,其中所有值的集合均由null表示。使用GROUPING()函数,您可以将表示超级聚合行中所有值的集合的空值与常规行中的NULL区分开。
JSON格式
MySQL 8.0添加了新的JSON函数,并提高了对JSON值进行排序和分组的性能​​。
JSON路径表达式中范围的扩展语法
MySQL 8.0扩展了JSON路径表达式中范围的语法。例如SELECT JSON_EXTRACT('[1、2、3、4、5]','$ [1至3]');结果为[2、3、4]。引入的新语法是SQL标准语法的子集,在SQL:2016,9.39 SQL / JSON路径语言:语法和语义中进行了描述。
JSON表功能
MySQL 8.0添加了JSON表功能,该功能允许使用SQL机制处理JSON数据。 JSON_TABLE()  创建JSON数据的关系视图。它将JSON数据评估的结果映射到关系行和列中。用户可以使用SQL将函数返回的结果查询为常规关系表,例如联接,项目和聚合。
JSON聚合功能
MySQL 8.0添加了聚合函数  JSON_ARRAYAGG()  来生成JSON数组,并添加了  JSON_OBJECTAGG()  来生成JSON对象。这样就可以将多行中的JSON文档组合到JSON数组或JSON对象中。
JSON合并功能
所述  JSON_MERGE_PATCH()  由指定的功能的JavaScript工具(和其他脚本语言)的语义  RFC7396,即,其由所述第二文档的优先级删除重复。例如,JSON_MERGE('{“ a”:1,“ b”:2}','{“ a”:3,“ c”:4}'); #返回{“ a”:3,“ b”:2,“ c”:4}。
JSON改进的排序
MySQL 8.0通过使用可变长度排序键为JSON值排序/分组提供了更好的性能。初步的基准测试表明,根据使用情况,排序可以提高1.2到18倍。
JSON部分更新
MySQL 8.0增加了对JSON_REMOVE(),  JSON_SET()  和  JSON_REPLACE()  函数的部分更新的支持  。如果仅更新了JSON文档的某些部分,我们希望向处理程序提供有关更改内容的信息,以便存储引擎和复制不需要编写完整的文档。
地理信息系统
MySQL 8.0提供了地理支持。这包括对空间参考系统(SRS)的元数据支持,以及支持SRS的空间数据类型,空间索引和空间功能。
字符集
MySQL 8.0将  UTF8MB4  设置为默认字符集。UTF8MB4是Web上最主要的字符编码,此举将使绝大多数MySQL用户的生活更加轻松。
成本模型
查询优化器考虑了数据缓冲
MySQL 8.0基于有关数据驻留在内存中还是磁盘上的知识来选择查询计划。从最终用户的角度来看,这是自动发生的,不涉及任何配置。从历史上看,MySQL成本模型假定数据驻留在旋转磁盘上。现在,与在内存中和在磁盘上查找数据相关的成本常数不同,因此,优化器将基于对数据位置的了解针对这两种情况选择更多的最佳访问方法。
优化器直方图
MySQL 8.0实现了直方图统计。使用直方图,用户可以创建表中某一列的数据分布的统计信息,通常是对非索引列进行的统计,然后查询优化器将使用它来查找最佳查询计划。直方图统计的主要用例是计算形式为“ COLUMN operator CONSTANT”的谓词的选择性(过滤效果)。
可靠性
交易数据字典
MySQL 8.0通过使用事务性数据字典确保原子的,崩溃安全的DDL来提高可靠性。这样,可以确保用户可以完全执行或完全不执行任何DDL语句。这在复制环境中尤其重要,否则主服务器和从服务器(节点)可能不同步,从而导致数据漂移。
可观察性
信息架构(加速)
MySQL 8.0重新实现信息架构。在新的实现中,信息模式表是存储在InnoDB中的数据字典表的简单视图。相比旧的实现方式,它的效率要高出100倍。
性能架构(加速)
MySQL 8.0通过在性能模式表上添加100多个索引来加速性能模式查询。
可管理性
看不见的索引
MySQL 8.0增加了切换索引可见性(可见/不可见)的功能。优化器在制定查询执行计划时不会考虑不可见索引。但是,索引仍保留在后台,因此使其再次可见很便宜。这样做的目的是让DBA / DevOp确定是否可以删除索引。如果您怀疑未使用索引,请先使其不可见,然后监视查询性能,如果没有出现查询速度下降的情况,最后删除该索引。
高可用性
MySQL InnoDB Cluster为您的数据库提供了一个集成的本地HA解决方案。它将MySQL Server与组复制,MySQL Router和MySQL Shell紧密集成在一起,因此您不必依赖外部工具,脚本或其他组件。
安全功能
社区版中的默认OpenSSL
MySQL 8.0在OpenSSL上统一   为MySQL企业版和MySQL社区版的默认TLS / SSL库。
SQL角色
MySQL 8.0实现了SQL角色。角色是特权的命名集合。目的是简化用户访问权限管理。可以向用户授予角色,向角色授予特权,创建角色,删除角色以及确定在会话期间适用的角色。
性能
MySQL 8.0比MySQL 5.7快2倍。MySQL 8.0为读/写工作负载,IO绑定工作负载和高争用“热点”工作负载提供了更好的性能。
扩展读/写工作量
MySQL 8.0可以很好地在RW和繁重的写入工作量上进行扩展。在密集的RW工作负载下,与MySQL 5.7相比,我们已经观察到4个并发用户已经获得了更好的性能,而高负载下的性能则提高了2倍以上。我们可以说,虽然5.7显着改善了只读工作负载的可伸缩性,但8.0显着改善了读/写工作负载的可伸缩性。结果是MySQL提高了标准服务器端硬件(例如具有2个CPU插槽的系统)的硬件利用率(效率)。这项改进是由于重新设计了InnoDB如何写入REDO日志。与历史上的实现不同,用户线程一直在努力记录其数据更改,而在新的REDO日志解决方案中,用户线程现在是无锁的,REDO写入和刷新由专用的后台线程进行管理,
利用IO容量(快速存储)
MySQL 8.0允许用户充分利用每个存储设备的功能。例如,通过使用英特尔傲腾闪存设备进行测试,我们能够在完全受IO约束的工作负载中交付1M点选择QPS。
高竞争负载(“热行”)时性能更好
MySQL 8.0显着提高了高争用工作负载的性能。当多个事务正在等待表中同一行上的锁时,会导致高争用工作负载,从而导致正在等待事务的队列。许多现实世界的工作负载在一天之内并不平稳,但在某些小时可能会突然爆发。MySQL 8.0在每秒突发事务,平均延迟和第95个百分位数延迟方面都处理得更好。对最终用户的好处是更好的硬件利用率(效率),因为系统需要的备用容量更少,因此可以在更高的平均负载下运行。
MySQL 8.0企业版
对于关键任务应用程序,MySQL Enterprise Edition提供了以下附加功能:
  • MySQL Enterprise Backup提供完整,增量和部分备份,时间点恢复和备份压缩。
  • MySQL企业高可用性,用于集成InnoDB Cluster的本地HA。
  • MySQL企业级透明数据加密(TDE),用于静态数据加密。
  • MySQL企业加密,用于加密,密钥生成,数字签名和其他加密功能。
  • MySQL Enterprise Authentication,用于与现有的安全基础结构(包括PAM和Windows Active Directory)集成。
  • MySQL企业防火墙可实时防御特定于数据库的攻击,例如SQL注入。
  • MySQL Enterprise Audit用于向新的和现有的应用程序添加基于策略的审核合规性。
  • MySQL Enterprise Monitor,用于管理数据库基础结构。
  • Oracle企业管理器,用于监视现有OEM实施中的MySQL数据库。
MySQL云服务
Oracle MySQL云服务基于MySQL企业版构建,并由Oracle Cloud提供支持,可提供企业级MySQL数据库服务。它提供了一流的管理工具,自助服务供应,弹性可伸缩性和多层安全性。
资源资源


标签: 暂无标签
iidba

写了 218 篇文章,拥有财富 2860,被 235 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈