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 表中。 优点 : 提升性能:减少对文件系统的依赖。 提高一致…...
Oracle EBS GL定期盘存WIP日记账无法过账数据修复
系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 用户反映来源为“定期盘存”和类别为“WIP”的日记账无法过账,标准日记账的界面上的过账按钮灰色不可用。但是,在超级用户职责下,该日记账又可以过账,细心检查发现该业务实体下有二个公司段值15100和…...
【绝对无坑】Mongodb获取集合的字段以及数据类型信息
Mongodb获取集合的字段以及数据类型信息 感觉很LOW的一个数据仓工具seatunel,竟然不能自动读取mongodb的表结构信息,需要手工创建。 然鹅,本人对mongodb也是新手,很多操作也不知所措,作为一个DBA,始终还是…...
【Git版本控制器--1】Git的基本操作--本地仓库
目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统,主要用于跟踪文件的更改,特别是在软件开发中。 为什么要版本…...
C++并发编程之无锁数据结构及其优缺点
在C并发编程中,无锁数据结构(Lock-free Data Structures)是指那些在实现中不使用互斥锁(如std::mutex)来保证线程安全的数据结构。相反,它们利用原子操作和内存模型来确保多线程环境下的正确性和高效性。下…...
Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速
本文使用 Ubuntu 环境。Ubuntu 直接使用 APT 安装的就支持 CUDA 加速。本文使用这样下载的版本进行演示,你自己编译或者其他源的版本可能会不同。 ffmpeg 的一些介绍,以及 macOS 版本的 ffmpeg 硬件加速请见《macOS上如何安装(不需要编译安装…...
rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...
一、什么是rclone? rclone是一个命令行程序,全称:rsync for cloud storage。是用于将文件和目录同步到云存储提供商的工具。因其支持多种云存储服务的备份,如Google Drive、Amazon S3、Dropbox、Backblaze B2、One Drive、Swift、…...
Ubuntu | 系统软件安装系列指导说明
文章目录 Ubuntu 系统软件安装系列指导说明工具系列1. Docker 与 Docker-Compose部署与安装 环境系列1. Golang部署与安装 数据库系列1. PostgreSQL17.2源码部署与安装 Ubuntu 系统软件安装系列指导说明 工具系列 1. Docker 与 Docker-Compose部署与安装 链接 环境系列 1…...
队列(算法十三)
简介 几乎没有单纯之考察队列的,队列一般只作为一个辅助工具 队列常服务于BFS queue接口 1.N叉树的层序遍历 link: 思路: 队列 层序遍历即可 code /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node()…...
vLLM私有化部署大语言模型LLM
目录 一、vLLM介绍 二、安装vLLM 1、安装环境 2、安装步骤 三、运行vLLM 1、运行方式 2、切换模型下载源 3、运行本地已下载模型 四、通过http访问vLLM 一、vLLM介绍 vLLM(官方网址:https://www.vllm.ai)是一种用于大规模语言模型&#x…...
OpenAI Whisper:语音识别技术的革新者—深入架构与参数
当下语音识别技术正以前所未有的速度发展,极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者,它凭借其卓越的性能、广泛的适用性和创新的技术架构,正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…...
基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台
项目是一个基于当前最前沿的前端技术栈(Vue3 Vite Ant Design Vue,简称Antdv)和后台技术栈(Spring Boot)实现的低代码开发平台。以下是对该项目的详细介绍: 一、项目概述 项目名称:lowcode-s…...
【Rust】错误处理机制
目录 思维导图 引言 一、错误处理的重要性 1.1 软件中的错误普遍存在 1.2 编译时错误处理要求 二、错误的分类 2.1 可恢复错误(Recoverable Errors) 2.2 不可恢复错误(Unrecoverable Errors) 三、Rust 的错误处理机制 3…...
Logback日志技术
Logback日志技术 日志 日志(Logging)是软件开发和运维中用于记录系统或应用程序运行期间发生的运行信息、状态变化、错误信息等的一种机制,这种记录的方式就好像我们日常生活中写日记一样。它提供了一种持久化的方式,使得开发者…...
9分布式微服务架构
分布式微服务架构不光需要从架构上的设计优化系统,还要在编码上优化达到最好的效果 中心化的设计 中心化的设计比较简单,分布式集群中的角色分为两种,管理者和被管理者。 在一个分布式或者集群中,管理者角色管理着其他处理实际…...
Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②
执行结果:通过 执行用时和内存消耗如下: void update(int *diff, int c, int add, int *cnt) {diff[c] add;if (add 1 && diff[c] 0) {// 表明 diff[c] 由 -1 变为 0(*cnt)--;} else if (add -1 && diff[c] -1) {// 表明 diff[c] 由 0 变为 -…...
HTML和CSS相关的问题,为什么页面加载速度慢?
页面加载速度慢是网站优化中一个常见的问题,可能由于多种原因,包括HTML和CSS的代码编写方式、资源的加载顺序、页面渲染的复杂性等。以下是一些常见的原因和优化方法,结合实际项目代码示例进行讲解。 1. 过多的资源请求 如果页面包含大量的…...
LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?
LiveGBS没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理? 1、none rtp data receive2、搭建GB28181视频直播平台 1、none rtp data receive LiveSMS 收不到下级推流 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放其次排…...
Flask表单处理与验证
Flask是一个轻量级的Python框架,它通过扩展库提供了对表单处理与验证的支持。WTForms是一个流行的Flask扩展库,用于创建和验证Web表单。它提供了一种声明式的方法来定义表单结构和验证逻辑,使得表单处理更为简洁和优雅。下面,我们…...
正泰电工携手图扑:变电站数字孪生巡检平台
随着电力行业的快速发展与智能化转型,传统的人工巡检方式难以匹配现代电网对于效率、安全和精细化管理的高标准要求。在此背景下,构建智慧变电站巡检系统已成为推动变电站智能化进程、实现高效运营和保障电网可靠性的重要战略。 图扑软件与正泰电工联合…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
