当前位置: 首页 > news >正文

MySQL 8.0中新增的功能(九)

FROM_UNIXTIME()、UNIX_TIMESTAMP()和CONVERT_TZ()的64位支持

根据MySQL 8.0.28版本的更新,FROM_UNIXTIME()、UNIX_TIMESTAMP() 和 CONVERT_TZ() 函数现在在支持64位的平台上处理64位值。这包括64位版本的Linux、MacOS和Windows。在兼容的平台上,UNIX_TIMESTAMP()函数现在可以处理的值范围扩大到了'3001-01-18 23:59:59.999999' UTC,FROM_UNIXTIME()函数可以将值转换为1970年以来的秒数,范围扩大到了32536771199.999999秒;CONVERT_TZ()函数在转换后接受不超过'3001-01-18 23:59:59.999999' UTC的值。

这些更改对32位平台上的这些函数行为没有影响。TIMESTAMP类型的行为也不受影响(在任何平台上);要处理2038年1月19日03:14:07.999999以后的日期时间,请使用DATETIME类型。

资源分配控制 

从MySQL 8.0.28开始,你可以通过检查Global_connection_memory状态变量来查看所有普通用户发出的查询所使用的内存量。(这个总数不包括系统用户如MySQL root使用的资源。它也不包括InnoDB缓冲池占用的任何内存。)

要启用对Global_connection_memory的更新,需要设置global_connection_memory_tracking = 1;默认情况下,它为0(关闭)。你可以通过设置connection_memory_chunk_size来控制Global_connection_memory的更新频率。

还可以通过设置以下列出的系统变量之一或两者,为普通用户在会话或全局级别上设置内存使用限制,或两者都设置:

• connection_memory_limit:为每个连接分配的内存量。当任何用户的内存超过此限制时,该用户的新查询将被拒绝。

• global_connection_memory_limit:为所有连接分配的内存量。当超过此限制时,任何普通用户的新查询都将被拒绝。

这些限制不适用于系统进程或管理账户。 

分离的XA事务

MySQL 8.0.29 引入了对XA事务的支持。一旦准备就绪,这些事务不再与原始连接关联。这意味着它们可以由另一个连接提交或回滚,并且当前会话可以立即开始另一个事务。

系统变量xa_detach_on_prepare控制XA事务是否分离,默认值为ON,这会导致所有的XA事务都是分离的。当此选项生效时,不允许在XA事务中使用临时表。

二进制日志自动清理控制

MySQL 8.0.29 版本新增了binlog_expire_logs_auto_purge系统变量,它提供了一个统一的界面用于启用和禁用二进制日志的自动清理。默认情况下,该选项已启用(ON);要禁用二进制日志文件的自动清理,请将该变量设置为OFF。

在二进制日志文件自动清理进行时,binlog_expire_logs_auto_purge必须设置为ON;该变量的值优先于任何其他服务器选项或变量的值,包括(但不仅限于)binlog_expire_logs_seconds。

binlog_expire_logs_auto_purge的设置不影响PURGE BINARY LOGS命令的执行。

条件性存储过程和触发器创建语句

从MySQL 8.0.29开始,以下语句支持IF NOT EXISTS选项:
• CREATE FUNCTION
• CREATE PROCEDURE
• CREATE TRIGGER
对于CREATE FUNCTION用于创建存储函数和CREATE PROCEDURE,在存在同名的例程时,此选项可以防止出现错误。对于用于创建可加载函数的CREATE FUNCTION,如果已经存在具有该名称的可加载函数,该选项可以防止出现错误。对于CREATE TRIGGER,在同一模式和同一表中已经存在同名触发器时,该选项可以防止出现错误。

此增强功能使这些语句的语法更接近CREATE DATABASE、CREATE TABLE、CREATE USER和CREATE EVENT(它们已经支持IF NOT EXISTS),并且与DROP PROCEDURE、DROP FUNCTION和DROP TRIGGER语句支持的IF EXISTS选项相辅相成。

包括FIDO库的升级

MySQL 8.0.30将所包含的fido2库(与authentication_fido插件一起使用)从版本1.5.0升级到版本1.8.0。

字符集:语言特定的排序规则

在以前,当有多种语言具有完全相同的排序规则定义时,MySQL只为其中一种语言实现了排序规则,这意味着一些语言只能通过适用于其他语言的utf8mb4 Unicode 9.0排序规则来覆盖。MySQL 8.0.30(及更高版本)通过为以前仅由其他语言的特定排序规则覆盖的语言提供特定于语言的排序规则来解决此类问题。以下是新排序规则所涵盖的语言:
• 挪威语(尼诺斯克)

挪威语(博克马尔)
• 塞尔维亚语(拉丁字符)
• 波斯尼亚语(拉丁字符)
• 保加利亚语
• 加利西亚语
• 蒙古语(西里尔字符)
MySQL为上述每种语言提供了*_as_cs和*_ai_ci两种排序规则。

对于REVOKE新增了IF EXISTS和IGNORE UNKNOWN USER选项

MySQL 8.0.30实现了REVOKE的两个新选项,用于确定当语句中指定的用户、角色或权限无法找到或无法分配时,是否产生错误或警告。以下是提供了放置这些新选项的非常基本的语法示例:

REVOKE [IF EXISTS] privilege_or_roleON objectFROM user_or_role [IGNORE UNKNOWN USER]

IF EXISTS选项使得一个未成功的REVOKE语句在目标用户或角色实际存在的情况下引发警告,而不管语句中是否有任何找不到的角色或权限的引用。

IGNORE UNKNOWN USER选项使得在语句中指定的目标用户或角色未找到时,一个未成功的REVOKE语句引发警告而不是错误。

 生成的不可见主键

从MySQL 8.0.30开始,可以运行一个复制源服务器,以便在创建没有显式主键的InnoDB表时添加一个生成的隐式主键(GIPK)。添加到这样一个表中的生成的键列定义等效于以下内容:

my_row_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT INVISIBLE PRIMARY KEY

默认情况下,GIPK模式是禁用的。要启用它,将sql_generate_invisible_primary_key服务器系统变量设置为ON。生成的隐式主键通常在诸如SHOW CREATE TABLE和SHOW INDEX的语句的输出中可见,以及MySQL信息模式表(如COLUMNS和STATISTICS表)中。您可以通过将show_gipk_in_create_table_and_information_schema设置为OFF来隐藏它们。

作为这项工作的一部分,mysqldump和mysqlpump添加了一个新的--skip-generated-invisible-primary-key选项,用于在输出中排除生成的隐式主键、列和列值。

GIPK和具有或不具有主键的表之间的复制

在MySQL复制中,复制服务器实际上会忽略源服务器上sql_generate_invisible_primary_key的任何设置,因此对复制的表没有影响。从MySQL 8.0.32开始,复制服务器可以向任何在复制时没有主键的InnoDB表中添加一个生成的隐式主键。您可以通过在复制服务器上调用CHANGE REPLICATION SOURCE TO ... REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE来实现此操作。

REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE与MySQL Group Replication不兼容。

崩溃安全的XA事务

以前,对于二进制日志来说,XA事务在意外停机方面不完全具备弹性,如果在服务器执行XA PREPARE、XA COMMIT或XA ROLLBACK过程中发生意外停机,则无法保证服务器能够恢复到正确的状态。可能会导致二进制日志中存在未应用的额外XA事务,或者丢失已应用的一个或多个XA事务。从MySQL 8.0.30开始,这个问题不再存在,无论由于什么原因一个服务器掉出了复制拓扑,都可以在重新加入时将其带回到一致的XA事务状态。

已知问题:当使用相同的事务XID依次执行XA事务,并在执行XA COMMIT ... ONE PHASE时发生中断时,如果在存储引擎中准备了此事务之后再次使用相同的XID,可能无法再将二进制日志和存储引擎之间的状态同步。

使用UNION进行嵌套 

从MySQL 8.0.31开始,与UNION结合使用时,可以在查询表达式的括号体内进行最多63个级别的嵌套。以前,此类查询将被拒绝并显示错误信息 ER_NOT_SUPPORTED_YET,但现在允许执行此类查询。以下是这样一个查询的EXPLAIN输出示例:

mysql> EXPLAIN FORMAT=TREE (-> (SELECT a, b, c FROM t ORDER BY a LIMIT 3) ORDER BY b LIMIT 2-> ) ORDER BY c LIMIT 1\G
*************************** 1. row ***************************
EXPLAIN: -> Limit: 1 row(s) (cost=5.55..5.55 rows=1)-> Sort: c, limit input to 1 row(s) per chunk (cost=2.50 rows=0)-> Table scan on <result temporary> (cost=2.50 rows=0)-> Temporary table (cost=5.55..5.55 rows=1)-> Limit: 2 row(s) (cost=2.95..2.95 rows=1)-> Sort: b, limit input to 2 row(s) per chunk (cost=2.50 rows=0)-> Table scan on <result temporary> (cost=2.50 rows=0)-> Temporary table (cost=2.95..2.95 rows=1)-> Limit: 3 row(s) (cost=0.35 rows=1)-> Sort: t.a, limit input to 3 row(s) per chunk (cost=0.35 rows=1)-> Table scan on t (cost=0.35 rows=1)
1 row in set (0.00 sec)

MySQL在折叠括号内查询表达式的体时遵循SQL标准的语义,因此外部更高的限制值不能覆盖内部更低的限制值。例如,(SELECT ... LIMIT 5) LIMIT 10 最多只会返回五行结果。

63级别的限制仅在MySQL优化器的解析器执行任何简化或合并操作之后才会生效。

禁用查询重写 

以前,使用Rewriter插件时,无论用户是谁,所有查询都可能被重写。这在某些情况下可能会引起问题,例如在管理系统时或应用来自复制源或由mysqldump或其他MySQL程序创建的转储文件中的语句时。MySQL 8.0.31通过引入一个新的用户特权SKIP_QUERY_REWRITE来解决这些问题;拥有此特权的用户发出的语句将被Rewriter忽略且不会进行重写处理。

MySQL 8.0.31还增加了一个新的服务器系统变量 rewriter_enabled_for_threads_without_privilege_checks。当设置为OFF时,由 PRIVILEGE_CHECKS_USER 为NULL的线程(如复制应用程序线程)发出的可重写语句不会被Rewriter插件进行重写处理。默认值是ON,这意味着这类语句会被重写处理。 

 

相关文章:

MySQL 8.0中新增的功能(九)

FROM_UNIXTIME()、UNIX_TIMESTAMP()和CONVERT_TZ()的64位支持 根据MySQL 8.0.28版本的更新&#xff0c;FROM_UNIXTIME()、UNIX_TIMESTAMP() 和 CONVERT_TZ() 函数现在在支持64位的平台上处理64位值。这包括64位版本的Linux、MacOS和Windows。在兼容的平台上&#xff0c;UNIX_T…...

QT基础篇(8)QT5模型视图结构

1.概述 QT5的模型视图结构主要包括模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和委托&#xff08;Delegate&#xff09;三个部分。 模型&#xff08;Model&#xff09;&#xff1a;模型是数据的抽象表示&#xff0c;负责存储和管理数据。它可以是自…...

vue3-响应式基础之reactive

reactive() 还有另一种声明响应式状态的方式&#xff0c;即使用 reactive() API。与将内部值包装在特殊对象中的 ref 不同&#xff0c;reactive() 将使对象本身具有响应性&#xff1a; 「点击按钮1」 <script lang"ts" setup> import { reactive } from vuec…...

【ceph】如何将osd的内容挂载出来---ceph-objectstore-tool 实现

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

怎样实现安全便捷的网间数据安全交换?

数据安全交换是指在数据传输过程中采取一系列措施来保护数据的完整性、机密性和可用性。网间数据安全交换&#xff0c;则是需要进行跨网络、跨网段甚至跨组织地进行数据交互&#xff0c;对于数据的传输要求会更高。 大部分企业都是通过网闸、DMZ区、VLAN、双网云桌面等方式实现…...

微信小程序定义并获取日志/实时log信息

步骤一&#xff1a;开通实时日志 可以在开发者工具->详情->性能质量->实时日志&#xff0c;点击前往&#xff0c;在浏览器打开we分析界面&#xff1a; 也可登录小程序管理后台&#xff0c;点击统计进入we分析&#xff1a; 在we分析界面找到性能质量&#xff0c;打开实…...

海外代理IP怎么用?常见使用问题及解决方案

海外代理IP是指提供全球范围内的代理服务器&#xff0c;代理服务器充当IP与目标网站之间的中介&#xff0c;可以起到安全匿名、提高网速、突破网络壁垒的作用。在使用代理IP的过程中&#xff0c;用户可能会遇到各种挑战&#xff0c;如连接问题、速度慢等。理解这些问题的原因并…...

DP:数位DP

数位DP的大致思想&#xff1a;枚举每一位能选取的合法值。 1. LC 2376 统计特殊整数 说是DP&#xff0c;但实际上状态转移方程挺难写的&#xff0c;毕竟是枚举集合论&#xff0c;这里就不贴状态转移方程了。总体的写法其实是搜索记忆化。之所以称之为DP&#xff0c;是因为&am…...

js逆向第21例:猿人学第20题新年挑战

文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…...

贪心+蓝桥杯

原题路径 题目思路 : 思路很简单&#xff0c;肯定是贪心做法&#xff0c;要使总代价最小&#xff0c;需用那些出现次数比avg多的数来替换那些没有出现或者是出现次数少于avg的数, 所以我们存当前数每次出现的代价是多少 ,枚举每一个 0 - 9 之间的数 &#xff0c;如果当前数出现…...

第二篇:新建node项目并运行

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 安装 Node.js&#xff1a;首先&#xff0c;确保你的…...

阳光保险选择OceanBase稳定运行超700天

阳光保险集团成立于 2005 年 7 月&#xff0c;旗下拥有财产保险、人寿保险、信用保证保险、资产管理等多家专业子公司&#xff0c;是全球市场化企业中成长最快的集团公司之一&#xff0c;目前位列中国保险行业前八。随着数字化升级趋势的不断加速&#xff0c;很多企业产生将软硬…...

最强大脑闪电心算草稿1

#include<bits/stdc.h> #include<windows.h> using namespace std; int main() {double speed,n,op,sum0;int ans;srand(time(NULL));cout<<"请输入加(1)/减(2)/加减混合(3):";cin>>op;cout<<"请输入题目数量:";cin>>…...

融优学堂-艺术史

导论4 1.【单选题】根据导论的讲解&#xff0c;下列表述正确的是&#xff08;&#xff09;。&#xff08;1&#xff09;艺术品是因人的活动而被创造出来的人工制品。&#xff08;2&#xff09;许多物品被制造出来时&#xff0c;最初的目的是满足某种实用的用途&#xff0c;而不…...

༺༽༾ཊ—设计-七个-07-原则-模式—ཏ༿༼༻

第七原则&#xff1a;迪米特职责 类与类之间的耦合度尽可能低 换言之&#xff0c;我们可以理解成———只与直接朋友说话&#xff0c;不跟陌生人说话 直接朋友&#xff1a; 通过方法传参传进来的朋友&#xff0c; 类自己的字段&#xff0c; 构造函数进来的也是直接朋友&…...

一篇文章带你搞懂---全排序

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 全排序&#xff08;Permutation&#xff09;是指将一组元素按照一定的顺序进行排列的过程。在计算机科学中&#xff0c;全排序是一…...

提升问题检索的能力

事实上&#xff0c;在信息极度丰富的时代&#xff0c;信息检索和筛选能力格外重要。一些搜索引擎的出现已极大地方便了我们日常的信息检索&#xff0c;此处需要注意的是我们不能仅仅局限于常见的搜索引擎&#xff0c;也需要关注和积累一些专业平台或是具有集成功能的引擎&#…...

软件测试|SQLAlchemy query() 方法查询数据

简介 上一篇文章我们介绍了SQLAlchemy 的安装和基础使用&#xff0c;本文我们来详细介绍一下如何使用SQLAlchemy的query()方法来高效的查询我们的数据。 创建模型 我们可以先创建一个可供我们查询的模型&#xff0c;也可以复用上一篇文章中我们创建的模型&#xff0c;代码如…...

FlinkCDC的分析和应用代码

前言&#xff1a;原本想讲如何基于Flink实现定制化计算引擎的开发&#xff0c;并以FlinkCDC为例介绍&#xff1b;发现这两个在表达上不知以谁为主&#xff0c;所以先分析FlinkCDC的应用场景和技术实现原理&#xff0c;下一篇再去分析Flink能在哪些方面&#xff0c;做定制化计算…...

序章 搭建环境篇—准备战士的剑和盾

第一步&#xff1a;安装node.js Node.js 内置了npm&#xff0c;只要安装了node.js&#xff0c;就可以直接使用 npm&#xff0c;官网地址&#xff1a; Download | Node.js 在这里不建议安装最新版本的node.js&#xff0c;可以选跟我一样的版本&#xff0c;node版本v16.13.2 链…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...