Mysql8.0的特性
Mysql8.0的特性
建议使用8.0.17及之后的版本,更新的内容比较多。
-
新增降序索引
-- 如下所示,我们可以在创建索引时 在字段名后面指定desc进行降序排序 create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));
-
group by 不再隐式排序
mysql5.7的版本我们在进行分组时会自动的对分组字段先进行排序操作,但是8.0版本就去除了这个功能,目的是在进行表迁移时其他数据库没有这个功能,进而出现一个业务问题,所以8.0版本就做到了和其他数据库统一。
-- 8.0版本group by不再默认排序,需要自己加order by select count(*),c2 from t1 group by c2 order by c2;
-
增加隐藏索引
有两种应用场景可以使用隐藏索引:不确定某个索引是否还在使用 进而不确定是否要删除,或者是新创建索引不确定线上环境是否能用。
如果想删除某个索引,可以先改为隐藏索引,这个时候隐藏索引是不会被sql语句使用,但还是会进行维护,这样如果此索引还在使用就能立刻改回来进行使用,避免了因为数据量大创建索引的耗时操作。
-- 在创建索引的后面加上invisible关键字create table t2(c1 int, c2 int, index idx_c1(c1), index idx_c2(c2) invisible);-- 这个时候此索引是不会被使用的,我们可以通过修改一个参数 让我们当前session会话能够使用隐藏索引select @@optimizer_switch\G -- 查看各种参数-- 然后将use_invisible_indexes参数改为on 前面需要加session哦 在会话级别设置查询优化器可以看到隐藏索引set session optimizer_switch="use_invisible_indexes=on"; -- 对已存在的索引进行修改 alter table t2 alter index idx_c2 visible;alter table t2 alter index idx_c2 invisible;
-
新增函数索引
就是在创建索引时,索引树中存储的其实是经过函数运算后的值,当然在使用这个索引时where条件中的字段也就必要使用函数了
create index idx_c1 on t3(c1); -- 创建普通索引 create index func_idx on t3((UPPER(c2))); -- 创建一个大写的函数索引
-
innodb存储引擎select for update跳过锁等待
对于select … for share(8.0新增加查询共享锁的语法)或 select … for update
在语句后面添加NOWAIT、SKIP LOCKED语法可以跳过锁等待,或者跳过锁定。
5.7的版本中如果发生了锁等待就会一直等待 直到innodb_lock_wait_timeout超时。而8.0版本可以可以添加NOWAIT关键字 不需要等到直接报错,添加SKIP LOCKED关键字就会跳过当前正在加锁的数据,返回其他未加锁的数据
-- session1 给c2字段加一个行锁 update t1 set ... where c1 = 2; -- 另一个session2 这里就会等待超时 mysql> select * from t1 where c1 = 2 for update; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction-- 查询立即返回 mysql> select * from t1 where c1 = 2 for update nowait; ERROR 3572 (HY000): Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set.-- 查询立即返回,过滤掉了第二行记录 mysql> select * from t1 for update skip locked;
-
新增innodb_dedicated_server自适应参数
当服务器仅仅只安装了mysql服务,才可以使用此参数,它会根据服务器当前空闲性能自动自动配置innodb_buffer_pool_size,innodb_log_file_size等参数。
如果当前服务器还有其他中间件服务则不建议开启,否则会影响其他程序
mysql> show variables like '%innodb_dedicated_server%'; --默认是OFF关闭,修改为ON打开 +-------------------------+-------+ | Variable_name | Value | +-------------------------+-------+ | innodb_dedicated_server | OFF | +-------------------------+-------+ 1 row in set (0.02 sec)
-
死锁检查控制
MySQL 8.0增加了一个新的动态变量 innodb_deadlock_detect,用于控制系统是否执行 InnoDB 死锁检查,默认是打开的。死锁检测会耗费数据库性能的,对于高并发的系统,我们可以关闭死锁检测功能,提高系统性能。但是我们要确保系统极少情况会发生死锁,同时要将锁等待超时参数调小一点,以防出现死锁等待过久的情况。
mysql> show variables like '%innodb_deadlock_detect%'; --默认是打开的 +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | innodb_deadlock_detect | ON | +------------------------+-------+ 1 row in set, 1 warning (0.01 sec)
-
undo文件不再使用系统表空间
在data目录下 默认创建2个UNDO表空间,不再使用系统表空间。
-
binlog日志过期时间精确到秒
之前我们是在my.conf文件中配置expire_logs_days参数设置保留binlog多少天,而在8.0版本中,MySQL默认使用binlog_expire_logs_seconds参数,并精确到了秒
-
窗口函数(Window Functions):也称分析函数
窗口函数与 SUM()、COUNT() 这种分组聚合函数类似,在聚合函数后面加上over()就变成窗口函数了,在括号里可以加上partition by等分组关键字指定如何分组,窗口函数即便分组也不会将多行查询结果合并为一行,而是将结果放回多行当中,即窗口函数不需要再使用 GROUP BY。
详情可以看此小节的有道云笔记
-
默认字符集由latin1变为utf8mb4
在8.0版本之前,默认字符集为latin1,utf8指向的是utf8mb3,8.0版本默认字符集为utf8mb4,utf8默认指向的也是utf8mb4。
-
MyISAM系统表全部换成InnoDB表
将系统表(mysql)和数据字典表全部改为InnoDB存储引擎,默认的MySQL实例将不包含MyISAM表,除非手动创建MyISAM表。
-
自增变量持久化
解决了以前版本的一个bug
-
DDL原子化
InnoDB表的DDL支持事务完整性,要么成功要么回滚。
-- 删除表时,此时t2表不存在 删除表报错不会回滚,t1表会被删除 mysql> drop table t1,t2; ERROR 1051 (42S02): Unknown table 'test.t2'-- 而8.0版本 删除表报错会回滚,t1表依然还在 mysql> drop table t1,t2; ERROR 1051 (42S02): Unknown table 'test.t2'
-
参数修改持久化
我们使用
set global
或者set session
设置的变量参数在mysql重启后会失效。MySQL 8.0版本支持在线修改全局参数并持久化,通过加上
PERSIST
关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启MySQL时,可以从该配置文件获取到最新的配置参数。mysql> set persist innodb_lock_wait_timeout=25
系统会在数据目录下生成一个包含json格式的mysqld-auto.cnf 的文件,格式化后如下所示,当my.cnf 和mysqld-auto.cnf 同时存在时,后者具有更高优先级。
{"Version": 1,"mysql_server": {"innodb_lock_wait_timeout": { // key"Value": "25", //value"Metadata": {"Timestamp": 1675290252103863,"User": "root","Host": "localhost"}}} }
相关文章:
Mysql8.0的特性
Mysql8.0的特性 建议使用8.0.17及之后的版本,更新的内容比较多。 新增降序索引 -- 如下所示,我们可以在创建索引时 在字段名后面指定desc进行降序排序 create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));group by 不再隐式排序 mysql5.7的版…...
JDK动态代理(tedu)(内含源代码)
JDK动态代理(tedu)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546187 目录JDK动态代理(tedu)(内含源代码)源代码下载链接…...
【数据结构】二叉搜索树
1、什么是二叉搜索树二叉搜索树又称为二叉排序树,二叉也就说明它跟二叉树一样最多只能有两个度,它可以是棵空树,也可以不是棵空树,当它不是棵空树的时候需要具备以下的性质:若它的左树不为空,那么它的左树上…...
抢跑数字中国建设,青岛市统计系统考察团赴实在智能调研统计数字员工
当前,数据要素价值不断显现,数字经济正引领着政企业加快数字技术的应用,融通创新工作机制,推进高质量转型。近日,中共中央、国务院印发了《数字中国建设整体布局规划》。《规划》指出,到2025年,…...
深浅拷贝——利用模拟实现basic_string深入理解
深浅拷贝——利用模拟实现basic_string深入理解 一、深浅拷贝的基本概念 深拷贝和浅拷贝都是指在对象复制时,复制对象的内存空间的方式。 1.1 深浅拷贝的不同之处 浅拷贝是指将一个对象的所有成员变量都直接拷贝给另一个对象,包括指针成员变量&#…...
大模型分布式系统
背景:模型越来越大,训练复杂度越来越高,需要训练的时间也是越来越长。那么我们该如何在现有的硬件基础上对模型做训练呢。模型规模的扩大,对硬件(算力、内存)的发展提出要求。然而,因为 内存墙 …...
【时序】时序预测任务模型选择如何选择?
时间序列是什么时间序列是一种特殊类型的数据集,其中一个或多个变量随着时间的推移被测量。 在时间序列中,观测值是随着时间的推移而测量的。你的数据集中的每个数据点都对应着一个时间点。这意味着你的数据集的不同数据点之间存在着一种关系。这对可以应用于时间序列数据集的…...
重温数据结构与算法之深度优先搜索
文章目录前言一、实现1.1 递归实现1.2 栈实现1.3 两者区别二、LeetCode 实战2.1 二叉树的前序遍历2.2 岛屿数量2.3 统计封闭岛屿的数目2.4 从先序遍历还原二叉树参考前言 深度优先搜索(Depth First Search,DFS)是一种遍历或搜索树或图数据结…...
STM32F103驱动LD3320语音识别模块
STM32F103驱动LD3320语音识别模块LD3320语音识别模块简介模块引脚定义STM32F103ZET6开发板与模块接线测试代码实验结果LD3320语音识别模块简介 基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识…...
2023 最新可用Google镜像地址 长期更新
Google镜像说明 由于种种原因,国家还未开放Google搜索的使用。虽然可以通过某些技术手段实现访问,但是还是有一些同学需要借助Google搜索镜像才可以达到访问的目的;笔者特意搜集了一些2022年最新的Google搜索镜像供有需求的童鞋使用…...
MATLAB算法实战应用案例精讲-【优化算法】蝗虫优化算法(GOA)及其算法变种(附matlab和python代码实现)
目录 前言 算法原理 算法思想 GOA 算法的数学模型 迭代模型 算法流程...
数据结构与算法 顺序表、链表总结
文章目录顺序表1、顺序表的基本概念链表1 简介链表概念链表特点链表与数组的对比2 链表的类型分类链表循环单向链表1 简介概念2 数据存储和实现数据存储数据实现3 操作基本操作实现线性表(List):零个或多个数据元素的有限序列。在较复杂的线性…...
Nginx集群搭建-三台
1.使用root用户登录Linux服务器 2.创建用户 输入 adduser test 后回车 #test 为创建的用户 3.为创建的用户设置密码 输入 passwd test 后回车 输入两次密码 4.出现 passwd:所有的身份验证令牌已经成功更新。证明Linux新用户和密码创建成功 5.使用新用户test登录Linu…...
【算法】图的存储和遍历
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录1. 图的存储1.1 邻接矩阵1.2 邻接表2. 图的遍历2.1 dfs 遍历2.2 bfs 遍历1. 图的存储 引入 一般来说,树和图有两种存储方式&#…...
文件如何批量复制保存在多个文件夹中
在日常工作中经常需要整理文件,比如像文件或文件夹重命名或文件批量归类,文件批量复制到指定某个或多个文件来中保存备份起来。一般都家最常用方便是手动一个一个去重命名或复制到粘贴到某个文件夹中保存,有没有简单好用的办法呢,…...
16N60-ASEMI高压MOS管16N60
编辑-Z 16N60在TO-220封装里的静态漏极源导通电阻(RDS(ON))为0.2Ω,是一款N沟道高压MOS管。16N60的最大脉冲正向电流ISM为48A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。16N60功耗…...
Open3D 多个点云配准(C++版本)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 多路配准(多个点云配准)是指在全局空间中对齐多个几何块的过程。输入的数据可以是点云或深度图像 P i P_i P...
java实现Hbase 增删改查
目录 一、新建一个maven工程 二、代码实现 2.1、配置hbase信息,连接hbase数据库 2.2、创建命名空间 2.3、创建表 2.4、删除表,删除之前要设置为禁用状态 2.5、添加数据 2.6、获取命令表空间 / tables列表 2.7、get方法查看表的内容 2.8、scan方法…...
1109. 航班预订统计 差分数组
1109. 航班预订统计 差分数组技巧适⽤于频繁对数组区间进⾏增减的场景 1.由数组a生成差分数组b{b[0]0,i0(或者b[0]a[0],i0)b[i]a[i]−a[i−1],i>01.由数组a生成差分数组b\left\{\begin{array}{l}b[0]0,i0(或者b[0]a[0],i0)\\ b[i]a[i]-a[i-1],i>0\end{array}\right. 1.由…...
图床搭建,使用typora上传
1. 准备gitee作为图床的仓库 新建仓库 准备仓库的私人令牌,后面配合使用 点击个人设置——》私人令牌 注意私人令牌,复制保存好,后面不能再看了 2. 准备PicGO,并进行相关配置 PicGo官方下载链接 下载安装好node.js,下载网址 安…...
低代码开发的优势是什么?
低代码开发的优势是什么?低代码开发这个概念这两年来经常出现在人们的视野中,市场对于低代码的需求也越来越庞大。 Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 可…...
Ip2Resion线上部署报数据越界及错误处理
上篇在本地测试调用Ip2Resigon解析行政区划 Ip2Region的Java本地实现运行正常,但部署到测试环境,抛出数组越界(java.lang.ArrayIndexOutOfBoundsException)异常。 环境信息 ip2Resion是2.7版本,对应文件后缀为 xdb。 …...
致敬我的C++启蒙老师,跟着他学计算机编程就对了 (文末赠书5本)
致敬我的C启蒙老师,跟着他学计算机编程就对了 摘要 讲述了一个故事,介绍了一位良师,一段因C而续写的回忆,希望对各位看官有所帮助和启发。 文章目录1 写在前面2 我的C启蒙老师3 谈谈老师给我的启发4 友情推荐5 文末福利1 写在前面…...
CSS中的伪元素和伪类
一直被伪类和伪元素所迷惑,以为是同一个属性名称,根据CSS动画,索性开始研究a:hover:after,a.hover:after的用法。 伪元素 是HTML中并不存在的元素,用于将特殊的效果添加到某些选择器。 对伪元素的描述 伪元素有两…...
逻辑优化基础-rewrite
简介 逻辑综合中的rewrite算法是一种常见的优化算法,其主要作用是通过对逻辑电路的布尔函数进行等效变换,从而达到优化电路面积、时序和功耗等目的。本文将对rewrite算法进行详细介绍,并附带Verilog代码示例。 一、算法原理 rewrite算法的…...
案例27-单表从9个更新语句调整为2个
目录 一:背景介绍 二:思路&方案 三:过程 1.项目结构 2.准备一个普通的maven项目,部署好mysql数据库 3.在项目中引入pom依赖 5.编写MyBitis配置文件 6.编写Mysql配置类 7.编写通用Update语句 8.项目启动类 四:总…...
Wordpress paid-memberships-pro plugins CVE-2023-23488未授权SQLi漏洞分析
目录 1.漏洞概述 2.漏洞等级 3.调试环境 4.漏洞代码 5 POC 1.漏洞概述 WordPress插件paid-memberships-pro版本<2.9.8中,容易受到REST路由“/pmpro/v1/order”的“code”参数中未验证的SQL注入漏洞的影响。攻击者可进行SQLi盲注,从而获取数据库权限。 CVE:...
【JavaWeb篇】JSTL相关知识点总结
目录 为什么会有JSTL? 什么是JSTL? 如何理解JSTL标准标签库呢? 如何使用JSTL? 第一步:引入JSTL标签库对应的jar包。 第二步:在JSP中引入要使用标签库。(使用taglib指令引入标签库。&#x…...
【蓝桥杯刷题】坑爹的负进制转换
【蓝桥杯刷题】——坑爹的负进制转换😎😎😎 目录 💡前言🌞: 💛坑爹的负进制转换题目💛 💪 解题思路的分享💪 😊题目源码的分享Ƕ…...
react+antdpro+ts实现企业级项目二:Strapi及认证登陆模块
在上一章节中,我们已经成功创建并登陆了系统,现在需要为系统添加权限和登录认证,以提高系统的安全性、数据保护、个性化服务和用户体验。此外,添加权限和登录认证还可以方便管理员进行用户和授权管理。为了快速开发前端࿰…...
网站不能正常显示出现后台代码/怎么才能建立一个网站卖东西
几天前我们看到Angular 1.4.0发布了-一个以社团为驱动的发布版本涵盖了400多个GitHub的提交,增加了对特性的提升,比如动画,以及可用性。 官方新闻发布稿 覆盖了绝大部分,这同样值得放于 官方版本库 中。 Angular.js 是一个神奇的…...
如何给网站做301重定向/app投放渠道有哪些
本文由:我永远喜欢DNF 原创首发,禁止任何平台和个人以任何方式抄袭,违者必究无论你是喜欢正经的职业百科还是搞笑的DNF趣事,点点关注不迷路小编会努力继续给大家带来干货满满的文章,您的关注和收藏是最大的支持~之前发…...
找人做网站需要准备什么材料/厨师培训
我正在运行一个基于Python的CGI脚本,在浏览器中打印“dig”命令的输出有困难。我使用Idle运行同一个脚本,它可以工作。在脚本如下:#!/usr/bin/python3.5## Modulesimport cgiimport subprocessimport re## Create HTML pageform cgi.FieldSt…...
嘉兴高端网站建设/请你设计一个网络营销方案
问题现象: 如何修改windows Server 2012 R2系统的远程连接数 操作步骤: 依次执行如下步骤: 1.远程登陆服务器,找到开始 →运行→输入命令 gpedit.msc→打开组策略编译器 2.选择算机配置 →管理模板 →Windows 组件→远程桌面服务→…...
手机网站建设新闻/百度地图官网2022最新版下载
在Mac/Linux/Windows上编译corefx遇到的问题及解决方法参考文章: (1)在Mac/Linux/Windows上编译corefx遇到的问题及解决方法 (2)https://www.cnblogs.com/dudu/p/build-corefx-on-mac-linux-windows.html 备忘一下。…...