当前位置: 首页 > 后端技术 > PHP

10 个开发者必知的 MySQL 8.0 新功能

时间:2023-03-29 22:15:32 PHP

开发者必须知道的10个MySQL8.0新特性从高到低展示这些特性:TOP10MySQLDocumentStoreDefaultutf8mb4EncodingJSONEnhancedCTEs(译者注:CommonTableExpressionsCommonTableExpressions)WindowFunctionsDescendingIndexBetterOptimizerConsumptionModelMySQLServerComponentsGIS(译者注:地理信息系统(GeographicInformationSystem)改进InnoDB引擎的NOWAIT和SKIPLOCKED选项1.MySQL文档存储这是MySQL8.0中最令人期待和流行的特性...而且非常容易理解.我对MySQL文档存储感到非常兴奋,我已经在世界各地展示了将近一年,并收到了很多很好的反馈。为什么MySQLDS这么好?因为使用一个解决方案,您可以同时处理SQL和NoSQL.你也可以结合两种语言的长处,你可以对相同的数据进行CRUD命令,也可以用SQL进行更复杂的查询比如joining多个表和/或集合。同时,后端采用知名强大的InnoDB引擎,MySQL文档存储引擎完全符合ACID标准。因为都在MySQL里面,所以可以受益于自己熟悉的内容,也可以转换成文件存储:replication,performance_schema,...2.默认字符集是utf8mb4使用MySQL8.0,我们当然专注于现代Web应用程序……这意味着移动!提到移动端,还有表情和大量的字符集、分类需要并存。这就是我们决定将默认字符集从latin-1切换到utf8mb4的原因。MySQL基于DUCET的新分类支持最新的Unicode9.0,重音和区分大小写的分类,日文,俄文,...3.JSON增强MySQL带来了一些新的JSON相关的变化:Add->>expression,作用等于JSON_UNQUOTE(JSON_EXTRACT())新增聚合函数JSON_ARRAYAGG()和JSON_OBJECTAGG()新增JSON_PRETTY()新增JSON工具函数,如JSON_STORAGE_SIZE()、JSON_STORAGE_FREE()MySQL8.0中对JSON最重要的优化之一是AJSON_TABLE()提供功能。此函数获取JSON格式的数据并将其转换为关系数据表。可以指定字段和数据的格式。也可以对JSON_TABLE()后的数据使用普通的SQL查询,比如JOINS、聚合查询等,...可以参考@stoker的博文,当然也可以看官方文档。需要注意的是,这不仅会影响开发者的使用,还会影响MySQL的执行性能。在旧系统中,更新JSON时,系统会删除旧数据并写入新数据。在新系统中,如果要更新JSON数据中的某个字段,正确的做法是直接更新JSONUpdate中的某个字段,这样执行效率更好,数据库主从复制(Replication)性能也会受益。4.CommonTableExpressions(CTEs)MySQL8.0新增了CTEs功能(译者注:CommonTableExpressionsPublicTableExpressions)。CTE是一个命名的临时结果集,它只存在于单个SQL语句的执行范围内,可以自引用或在同一查询中多次引用。5.统计分析方法对于查询中的每一行,统计分析方法使用与该行关联的行来执行计算。这类似于GROUPBY方法,但它保留行而不是折叠它们。下面是MySQL8.0.4目前实现的统计分析方法列表:名称描述CUME_DIST()累积分布值DENSE_RANK()当前行在分区中的排名,无区间窗框LAG()Partition指定行的参数值在当前行后面LAST_VALUE()窗框第一行的参数值LEAD()分区中当前行的参数值NTH_VALUE()参数窗口帧第N行的值NTILE()分区中的当前行数它的分区标志将被忽略。这已不再是这种情况!键值现在按降序存储。以前,可以按相反顺序扫描索引,但会影响性能。倒排索引可以顺序扫描,效率会更高。7.更好的优化器成本模型新的优化器成本模型(OptimizerCostModel)现在会计算内存缓存数据和硬盘数据。建议阅读?ystein的博客文章。8.MySQL服务器模块你可以使用这个特性来扩展MySQL服务器的功能,比插件更容易开发和维护。建议阅读官方文档。9、GIS的改进MySQL8.0对GIS(译者注:GeographicInformationSystem地理信息系统)的支持有了很大的改进,其功能直追PostgreSQL。一些示例:轴将具有单位地理坐标系轴不会偏移轴支持排序轴支持方向依赖10.InnoDB引擎NOWAIT和SKIPLOCKEDMySQL8.0的InnoDB引擎现在可以更好地处理热行争用Rob。InnoDB支持带有SELECT...FOR\SHARE和SELECT...FOR\UPDATE锁定读取语句的NOWAIT和`SKIP\LOCKED选项。如果请求的行被另一个事务锁定,则NOWAIT立即返回语句。SKIPLOCKED`从结果集中删除锁定的行。请参阅使用NOWAIT和SKIPLOCKED锁定并发读取。当然MySQL8.0的优秀特性并没有在这里结束,例如对正则表达式的支持也是一个有趣的特性,它刚刚出现在[8.0.4]版本中(https://mysqlserverteam.com/t…。新SQLGROUPING()特性、具有IPV6和UUID操作的新业务、更多优化器提示......我希望这能让你很好地了解什么样的请求正在推动MySQL的创新。下一篇文章将介绍MySQL8.0特性,应该使开发商开心吗?