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版本的更新,FROM_UNIXTIME()、UNIX_TIMESTAMP() 和 CONVERT_TZ() 函数现在在支持64位的平台上处理64位值。这包括64位版本的Linux、MacOS和Windows。在兼容的平台上,UNIX_T…...
QT基础篇(8)QT5模型视图结构
1.概述 QT5的模型视图结构主要包括模型(Model)、视图(View)和委托(Delegate)三个部分。 模型(Model):模型是数据的抽象表示,负责存储和管理数据。它可以是自…...

vue3-响应式基础之reactive
reactive() 还有另一种声明响应式状态的方式,即使用 reactive() API。与将内部值包装在特殊对象中的 ref 不同,reactive() 将使对象本身具有响应性: 「点击按钮1」 <script lang"ts" setup> import { reactive } from vuec…...
【ceph】如何将osd的内容挂载出来---ceph-objectstore-tool 实现
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

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

微信小程序定义并获取日志/实时log信息
步骤一:开通实时日志 可以在开发者工具->详情->性能质量->实时日志,点击前往,在浏览器打开we分析界面: 也可登录小程序管理后台,点击统计进入we分析: 在we分析界面找到性能质量,打开实…...

海外代理IP怎么用?常见使用问题及解决方案
海外代理IP是指提供全球范围内的代理服务器,代理服务器充当IP与目标网站之间的中介,可以起到安全匿名、提高网速、突破网络壁垒的作用。在使用代理IP的过程中,用户可能会遇到各种挑战,如连接问题、速度慢等。理解这些问题的原因并…...
DP:数位DP
数位DP的大致思想:枚举每一位能选取的合法值。 1. LC 2376 统计特殊整数 说是DP,但实际上状态转移方程挺难写的,毕竟是枚举集合论,这里就不贴状态转移方程了。总体的写法其实是搜索记忆化。之所以称之为DP,是因为&am…...

js逆向第21例:猿人学第20题新年挑战
文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…...
贪心+蓝桥杯
原题路径 题目思路 : 思路很简单,肯定是贪心做法,要使总代价最小,需用那些出现次数比avg多的数来替换那些没有出现或者是出现次数少于avg的数, 所以我们存当前数每次出现的代价是多少 ,枚举每一个 0 - 9 之间的数 ,如果当前数出现…...

第二篇:新建node项目并运行
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 安装 Node.js:首先,确保你的…...

阳光保险选择OceanBase稳定运行超700天
阳光保险集团成立于 2005 年 7 月,旗下拥有财产保险、人寿保险、信用保证保险、资产管理等多家专业子公司,是全球市场化企业中成长最快的集团公司之一,目前位列中国保险行业前八。随着数字化升级趋势的不断加速,很多企业产生将软硬…...
最强大脑闪电心算草稿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.【单选题】根据导论的讲解,下列表述正确的是()。(1)艺术品是因人的活动而被创造出来的人工制品。(2)许多物品被制造出来时,最初的目的是满足某种实用的用途,而不…...

༺༽༾ཊ—设计-七个-07-原则-模式—ཏ༿༼༻
第七原则:迪米特职责 类与类之间的耦合度尽可能低 换言之,我们可以理解成———只与直接朋友说话,不跟陌生人说话 直接朋友: 通过方法传参传进来的朋友, 类自己的字段, 构造函数进来的也是直接朋友&…...

一篇文章带你搞懂---全排序
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 全排序(Permutation)是指将一组元素按照一定的顺序进行排列的过程。在计算机科学中,全排序是一…...
提升问题检索的能力
事实上,在信息极度丰富的时代,信息检索和筛选能力格外重要。一些搜索引擎的出现已极大地方便了我们日常的信息检索,此处需要注意的是我们不能仅仅局限于常见的搜索引擎,也需要关注和积累一些专业平台或是具有集成功能的引擎&#…...

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

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

序章 搭建环境篇—准备战士的剑和盾
第一步:安装node.js Node.js 内置了npm,只要安装了node.js,就可以直接使用 npm,官网地址: Download | Node.js 在这里不建议安装最新版本的node.js,可以选跟我一样的版本,node版本v16.13.2 链…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...