MySQL8.0新特性
第十八章_MySQL8.0新特性
1.新特性概述
1. 数据库管理和存储
1.1 数据字典
-
特性: MySQL 8.0 使用统一的数据字典存储元数据(如表、列、索引等),并将其存储在 InnoDB 表中。
-
优点
:
-
提升性能:减少对文件系统的依赖。
-
提高一致性:避免元数据与实际数据不同步的问题。
-
1.2 隐式主键
-
特性: 当创建没有主键的表时,MySQL 8.0 会自动生成一个隐藏的主键。
-
优点
:
-
提高数据访问效率。
-
减少手动维护主键的麻烦。
-
2. SQL 语言增强
2.1 窗口函数
-
特性: 支持窗口函数(
OVER
子句),允许在查询中执行复杂的分析操作。 -
示例
:
SELECT name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank FROM employees;
-
优点
:
-
适合排名、累计总和、移动平均等分析场景。
-
2.2 公用表表达式(CTE)
-
特性: 支持递归和非递归 CTE(
WITH
子句)。 -
示例
:
WITH RECURSIVE cte AS (SELECT 1 AS nUNION ALLSELECT n + 1 FROM cte WHERE n < 5 ) SELECT * FROM cte;
-
优点
:
-
提高查询的可读性和复用性。
-
递归查询支持层级结构数据处理。
-
2.3 JSON 增强
-
特性: 增强了对 JSON 数据类型的支持,包括 JSON 表达式、函数和索引。
-
示例
:
SELECT JSON_EXTRACT(json_column, '$.key') AS value FROM my_table;
-
新增函数:
JSON_TABLE()
、JSON_ARRAYAGG()
、JSON_OBJECTAGG()
等。 -
优点
:
-
更高效地处理半结构化数据。
-
2.4 默认值表达式
-
特性: 支持列的默认值为表达式。
-
示例
:
CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
优点
:
-
动态设置默认值,更灵活。
-
3. 性能优化
3.1 索引增强
-
特性: 支持隐式列的降序索引(
DESC
)。 -
优点
:
-
提高查询性能,尤其是在排序需求较多的场景中。
-
3.2 持久化生成列
-
特性: 支持生成列的持久化(
STORED
)。 -
优点
:
-
减少存储开销,同时支持复杂计算。
-
3.3 查询性能改进
-
特性: 优化器改进了查询计划的生成,支持更复杂的优化场景,如物化 CTE。
-
优点
:
-
提高复杂查询的执行效率。
-
4. 安全性增强
4.1 账户锁定和密码策略
-
特性: 支持用户账户锁定(
ACCOUNT LOCK
)和密码过期策略。 -
示例
:
ALTER USER 'user'@'localhost' ACCOUNT LOCK;
-
优点
:
-
提高账户安全性,防止暴力破解。
-
4.2 默认使用 caching_sha2_password
-
特性: 默认身份验证插件更改为
caching_sha2_password
。 -
优点
:
-
提高密码存储的安全性。
-
4.3 动态权限
-
特性: 支持动态权限,可以更细粒度地控制用户操作。
-
示例
:
GRANT BACKUP_ADMIN ON *.* TO 'user'@'localhost';
-
优点
:
-
更灵活的权限管理。
-
5. JSON 和 GIS 数据类型改进
5.1 JSON 数据类型
-
新增 JSON 函数,如
JSON_TABLE()
,用于将 JSON 数据转换为关系型数据表。 -
支持 JSON 部分更新,提升性能。
5.2 GIS 数据类型
-
特性: 改进了对 GIS 数据类型的支持,包括更高效的空间索引。
-
优点
:
-
更适合地理位置相关的应用场景。
-
6. 开发工具和可用性
6.1 错误日志管理
-
特性: 错误日志支持多种格式(如 JSON)和日志轮换。
-
优点
:
-
提高日志分析和管理的效率。
-
6.2 系统变量持久化
-
特性: 支持动态系统变量的持久化。
-
示例
:
SET PERSIST max_connections = 200;
-
优点
:
-
重启后仍然保留变量值,无需修改配置文件。
-
7. 其他改进
7.1 数据复制
-
支持基于事务的复制,增强了复制的稳定性和一致性。
-
支持并行复制,提高复制性能。
7.2 临时表改进
-
临时表默认使用 InnoDB 存储引擎,提高事务支持能力。
2.新特性1: 窗口函数
2.2 排名函数
用于给数据分配排名:
-
ROW_NUMBER()
: 为每行分配唯一的序号。 -
RANK()
: 按排序规则排名,值相同的行具有相同的排名,下一排名会跳过。 -
DENSE_RANK()
: 与RANK()
类似,但不会跳过排名。 -
NTILE(n)
: 将数据划分为n
个桶,并为每行分配桶号。
2.3 偏移函数
用于访问窗口内其他行的数据:
-
LAG(column, offset, default)
: 获取当前行之前第offset
行的值。 -
LEAD(column, offset, default)
: 获取当前行之后第offset
行的值。 -
FIRST_VALUE(column)
: 获取窗口中第一行的值。 -
LAST_VALUE(column)
: 获取窗口中最后一行的值。
2.4 比率和累计分布
-
PERCENT_RANK()
: 当前行在分组中的百分比排名。 -
CUME_DIST()
: 当前行及之前的行在分组中的累计分布比例。
相关文章:
MySQL8.0新特性
第十八章_MySQL8.0新特性 1.新特性概述 1. 数据库管理和存储 1.1 数据字典 特性: MySQL 8.0 使用统一的数据字典存储元数据(如表、列、索引等),并将其存储在 InnoDB 表中。 优点 : 提升性能:减少对文件系统的依赖。 提高一致…...
Browser-Use Web UI:浏览器自动化与AI的完美结合
Browser-Use Web UI:浏览器自动化与AI的完美结合 前言简介一、克隆项目二、安装与环境配置1. Python版本要求2. 安装依赖3. 安装 Playwright4. 配置环境变量(非必要步骤)三、启动 WebUI四、配置1. Agent设置2. 大模型设置3. 浏览器相关设置4. 运行 Agent结语前言 Web UI是在…...
006-excel数据输出insert语句
一、在空白列插入,选择需要的列 "INSERT INTO tab_name1 (code, name) VALUES ("&A1&", "&B1&");"二、 拖动填充块,或者双击填充块(可以快速填充整列) 三、直接把生成的 insert 语…...
AI大模型如何赋能电商行业并引领变革?
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于AI大模型如何赋能电商行业并引领变革的相…...
食堂采购系统源码:基于PHP的校园食堂供应链管理平台开发全解析
传统的食堂采购管理普遍存在信息不透明、流程繁琐、效率低下等问题,这使得开发一款高效、智能的食堂采购系统变得尤为重要。本篇文章,笔者将详细解析基于PHP开发的校园食堂供应链管理平台,从功能设计、系统架构到技术实现,全方位剖…...
【2024华为OD-E卷-100分-字符串分割】(题目+思路+JavaC++Python解析)
题目 字符串分割 给定一个字符串 s 和一个整数 k,你需要将字符串 s 分割成恰好 k 个非空子字符串,使得这些子字符串中字典序最大的子字符串尽可能小。 输入: 第一行输入一个字符串 s(只包含小写字母)。第二行输入一…...
MCP Server开发的入门教程(python和pip)
使用python技术栈开发的简单mcp server 需要安装 MCP server的需要使用python-sdk,python需要 3.10,安装如下 pip install mcpPS: MCP官方使用的是uv包管理工具,我平时使用pip比较多,所以文中以pip为主。因为mcp的一些依赖包版本并不是最新的,所以最好弄一个干净的环境…...
我的年度总结
这一年的人生起伏:从曙光到低谷再到新的曙光 其实本来没打算做年度总结的,无聊打开了帅帅的视频,结合自己最近经历的,打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…...
48_Lua错误处理
在编写Lua应用时,都可能会遇到不可预见的错误,而错误处理是确保程序稳定性和健壮性的关键环节。有效的错误处理不仅能防止程序崩溃,还能提供有用的反馈信息给开发者或最终用户,从而提高应用程序的质量。本文将详细介绍Lua中的错误处理机制。 1.错误类型 Lua中的错误类型主…...
掌握 React 关键:理解 super () 和 super (props) 的不同应用
在 React 中,super() 和 super(props) 都与 React 类组件的构造函数(constructor)以及继承有关。为了理解它们之间的区别,我们需要了解 JavaScript 类继承机制以及 React 类组件的工作原理。 1. super() 与 super(props) 的区别 …...
type 属性的用途和实现方式(图标,表单,数据可视化,自定义组件)
1.图标类型 <uni-icon>组件中,type可以用来指定图标的不同样式。 <uni-icons type"circle" size"30" color"#007aff"></uni-icons> //表示圆形 <uni-icons type"square" size"30" co…...
scala基础学习_方法函数
文章目录 方法与函数函数(又称函数值/匿名函数)定义方法注意 单参数函数多参数函数函数作为参数传递 方法将方法转换为函数方法的返回值总结 方法与函数 函数(又称函数值/匿名函数) 定义在任何地方:函数可以定义在类…...
linux: 文本编辑器vim
文本编辑器 vi的工作模式 (vim和vi一致) 进入vim的方法 方法一:输入 vim 文件名 此时左下角有 "文件名" 文件行数,字符数量 方法一: 输入 vim 新文件名 此时新建了一个文件并进入vim,左下角有 "文件名"[New File] 灰色的长方形就是光标,输入文字,左下…...
《深入理解Mybatis原理》Mybatis中的缓存实现原理
一级缓存实现 什么是一级缓存? 为什么使用一级缓存? 每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。 在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句&…...
【Debug】django.db.utils.OperationalError: (1040, ‘Too many connections‘)
报错: django.db.utils.OperationalError: (1040, ‘Too many connections‘) 排查 可能是Mysql的连接数量超过了允许的最大连接数量; 查看Mysql允许最大连接数量: -- 查看允许连接的最大数量 SHOW VARIABLES LIKE %max_connections%;-- 查…...
常用教程备份
1.Ubuntu 系统软件安装教程 https://blog.csdn.net/weixin_51591021/article/details/134363237 2.Docker 教程 https://blog.csdn.net/weixin_51591021/article/details/134363849 3.Makefile 教程 https://blog.csdn.net/weixin_51591021/article/details/134363638 4.…...
什么是视频孪生智慧能源?视频孪生智慧能源的应用案例
视频孪生智慧能源是集三维地理信息系统、视频虚实融合、数字孪生、人工智能等多技术于一体的综合应用,旨在实现对能源系统的实时、动态、全方位监控和管理。 具体来说,视频孪生智慧能源通过以下方式实现其功能: 技术融合:…...
Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书
文章目录 前言一、资源准备1. 下载对应源码2.安装编译工具3.安装并设置golang 二、修改证书有效期1.修改证书有效期2.修改 CA 证书有效期 三、编译kubeadm四、使用新kubeadm方式1.当部署新集群时,使用该kubeadm进行初始化2.替换现有集群kubeadm操作 前言 kubeadm 默认证书为一…...
时序数据库的订阅对比:TDengine vs InfluxDB 谁更强?
目录 1. 架构:内置 vs 依赖外部 TDengine: InfluxDB: 2. 灵活性:动态订阅 vs 静态订阅 TDengine: InfluxDB: 3. 消费机制、API 兼容性与易用性对比 4. 结语 在时序数据应用场景中,数据实时消费和处理能力成为衡量数据库性能和可用性的…...
OpenCV实现多尺度细节提升算法
1、算法原理 多尺度细节提升算法来源于论文*《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》*,算法主要是解决细节增强算法中噪声和细节的平衡问题。 常规的非锐化掩蔽(USM)算法在提升细节…...
按键精灵ios越狱脚本教程:多选框联动的ui界面
以下是一个简单的 iOS 代码示例,使用 Swift 语言来创建一个包含多选框(复选框)的 UI 界面,并实现联动效果。 import UIKitclass ViewController: UIViewController {let checkbox1 UIButton(type:.system)let checkbox2 UIButt…...
YOLOv10-1.1部分代码阅读笔记-patches.py
patches.py ultralytics\utils\patches.py 目录 patches.py 1.所需的库和模块 2.def imread(filename: str, flags: int cv2.IMREAD_COLOR): 3.def imwrite(filename: str, img: np.ndarray, paramsNone): 4.def imshow(winname: str, mat: np.ndarray): 5.def tor…...
撤回最近的 git commit
在 Git 中,如果你想撤回最近的 git commit,可以根据不同的需求选择不同的操作。以下是几种常见的撤回方式: 1. 撤回最后一次 commit,但保留修改(soft reset) 如果你想撤销 git commit,但保留修…...
基于DFT与IIR-FIR滤波器的音频分析与噪声处理
基于DFT与IIR-FIR滤波器的音频分析与噪声处理 【完整源码文档报告】 【需要可随时联系博主,常在线能秒回!】 系统功能与实现介绍 功能与实现 音频处理系统界面搭建:利用MATLAB的GUI工具,构建了音频分析界面,包括文件导入、录…...
MySQL主从部署(保姆版)
一、mysql 同步复制有关概述 一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。…...
Golang笔记——协程同步
大家好,这里是Good Note,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的协程同步的实现和应用场景。 文章目录 协程同步是什么?为什么需要协程同步?常见的协程同步机制互斥锁࿰…...
1.14学习
misc buuctf-大白 由提示可以知道这个应该是修改图片的宽高了,下载附件后得到了图片用随波逐流直接修改图片的宽高输出即可 buuctf-乌镇峰会种图 点击下载,出现了一个网页为图片将图片另存为,用随波逐流得到的信息解不了,再试…...
2025 年 JavaScript 入门教程
2025 年 JavaScript 入门教程 在当今数字化时代,JavaScript 作为一门广泛应用于 Web 开发的编程语言,其重要性不言而喻。无论是前端页面的交互实现,还是后端服务器的逻辑处理,JavaScript 都发挥着关键作用。本教程旨在帮助初学者…...
paddle——站在巨人肩膀上及背刺二三事
飞桨AI Studio - 人工智能学习与实训社区 飞桨PaddlePaddle-源于产业实践的开源深度学习平台 先抛结论,对于想要快速了解某一领域有哪些比较适合落地的算法的从业人员来说,是一个很好的参考系统。从中可以知道从哪些模型里选型、如何轻量化、如何加…...
nvim , neovim , Lua 语法, text object
说明 : 了解一下 nvim 中的基本的 文本的类型。 基本类型有几种, 1 word , sentence , paragragh 2 (), {}, ,"", 3 就是 html 中的 tag 标签。 然后就是选中的类型。 1 i : 待变 inner 2 a: 代表around , 基本的动作有 &…...
6.2 MySQL时间和日期函数
以前我们就用过now()函数来获得系统时间,用datediff()函数来计算日期相差的天数。我们在计算工龄的时候,让两个日期相减。那么其中的这个now函数返回的就是当前的系统日期和时间。 1. 获取系统时间函数 now()函数,返回的这个日期和时间的格…...
批量识别图片型PDF指定区域内容识别保存表格+PDF批量改名:技术难题与项目实战总结
相关项目实战: 一、引言 在当今数字化办公环境中,批量处理PDF文件中的表格数据并进行改名是一项常见但具有挑战性的任务。无论是从大量的财务报销凭证、学术研究报告还是项目文档中提取表格信息,都可能遇到各种各样的技术难题。 二、批量提…...
【MySQL】索引(一)
索引 一、磁盘1、物理结构2、示意图3、定位扇区4、读写操作的基本方式 二、页1、介绍2、示例3、作用与结构4、类型(1)数据页(2)其他 5、组织与管理6、性能优化7、示意图(B树) 三、索引1、作用2、注意事项 四…...
缩放 对内外参的影响
当你对图像进行同比例缩小时,图像的内参需要相应地变化,但外参通常保持不变。 相机内参 相机内参(内参矩阵)描述了相机的固有属性,包括焦距和主点(光轴与图像平面的交点)的坐标。 当你对图像…...
excel设置好的可选择列数据后,如何快速输入到单元格中?
当设置好列的【数据】-【数据有效性】-【序列】后,在单元格中输入可选择数据的开头,就会提示出对应的可选择数据,然后,按一下键盘上的【↓】键,再按回车,即可快速输入到单元格中。...
设计一个流程来生成测试模型安全性的问题以及验证模型是否安全
要使用 Ollama 运行 llama3.3:70b 模型,并设计一个流程来生成测试模型安全性的问题以及验证模型是否安全,可以按照以下步骤进行设计和实现。整个过程包括环境配置、设计安全测试提示词、执行测试以及分析结果。以下是详细的步骤和指导: 1. 环…...
vue3学习日记5 - 项目起步
最近发现职场前端用的框架大多为vue,所以最近也跟着黑马程序员vue3的课程进行学习,以下是我的学习记录 视频网址: Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记: vue3学习日记1 - 环境搭建-CSDN博…...
ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
在 uart_driver_install 函数中,参数 RX_BUF_SIZE * 2 指定了接收缓冲区(RX buffer)的大小。这个参数对于 UART 驱动程序来说非常重要,因为它决定了可以存储多少接收到的数据,直到应用程序读取它们为止。下面是对该函数…...
android源码编译后,为什么emulator一直黑屏或者停止android界面
一、前言 最近编译了android12的源码,但是编译完成之后,emulator命令一直卡在android界面上,不会进入系统。经过我多方面的研究,终于找到解决方案。记录下来,希望对遇到这个问题的朋友有所帮助。 二、解决方案 网上…...
ubuntu22.04降级安装CUDA11.3
环境:主机x64的ubuntu22.04,原有CUDA12.1,但是现在需要CUDA11.3,本篇文章介绍步骤。 一、下载CUDA11.3的run文件 下载网址:https://developer.nvidia.com/cuda-11-3-1-download-archive?target_osLinux&target_…...
hive知识体系
hive知识体系 hive知识体系 链接: 1Hive概览 链接: 2Hive表类型 链接: 3Hive数据抽样 链接: 4Hive计算引擎 链接: 5Hive存储与压缩 链接: 6Hive Sql 大全 链接: 6Hive Sql 大全-Hive 函数 链接: 6Hive Sql 大全-窗口函数 链接: 7Hive执行计划 链接: 8Hive SQL底层执行原理 链接…...
【ASP.NET学习】Web Forms创建Web应用
文章目录 什么是 Web Forms?ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的?经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…...
【Qt】QThread总结
目录 成员函数创建方式方式一方式二方式三注意 example总结参考文章 成员函数 创建方式 方式一 QThread 静态成员create auto thd QThread::create([]{});方式二 继承QThread类,重写run run函数它作为线程的入口,也就是线程从run()开始执行&#…...
常见的安全测试漏洞详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、SQL注入攻击 SQL 注入攻击主要是由于程序员在开发过程中没有对客户端所传输到服务器端的参数进行严格的安全检查,同时 SQL 语句的执行引用了该参…...
代理模式和适配器模式有什么区别
代理模式(Proxy Pattern)和适配器模式(Adapter Pattern)都是结构型设计模式,它们有不同的应用场景和目标,虽然在某些方面看起来相似,但它们的意图和实现方式有显著的区别。 1. 代理模式&#x…...
机器学习头歌(第三部分-强化学习)
一、强化学习及其关键元素 二、强化学习的分类 三、任务与奖赏 import numpy as np# 迷宫定义 maze np.array([[0, 0, 0, 0, 0],[0, -1, -1, 0, 0],[0, 0, 0, -1, 0],[-1, -1, 0, -1, 0],[0, 0, 0, -1, 1] ])# 定义强化学习的参数 gamma 0.8 # 折扣因子 alpha 0.5 # 学习率…...
【Hive】新增字段(column)后,旧分区无法更新数据问题
TOC 【一】问题描述 Hive修改数据表结构的需求,比如:增加一个新字段。 如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt20190101),则该旧分区中的col1将为…...
智能化的城市管理解决方案,智慧城管执法系统源码,微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术
智慧城管执法系统是一种高度信息化、智能化的城市管理解决方案,它利用现代信息技术,如微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术、Element UI组件库、UniApp跨平台开发工具以及MySQL数据库等,构建了一个综合性的执法管理平…...
【区间DP】【hard】力扣1312. 让字符串成为回文串的最少插入次数
加粗样式给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。 请你返回让 s 成为回文串的 最少操作次数 。 「回文串」是正读和反读都相同的字符串。 示例 1: 输入:s “zzazz” 输出:0 解释:字…...
android刷机
android ota和img包下载地址: https://developers.google.com/android/images?hlzh-cn android启动过程 线刷 格式:ota格式 模式:recovery 优点:方便、简单,刷机方法通用,不会破坏手机底层数据࿰…...