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

MySQL8.0 新特性随笔

1、概述

本文主要随笔记录一些MySQL8.0相较于5.7版本,有哪些不同之处。

2、索引

2.1、索引跳跃扫描

有这样一个复合索引: index_a_b_c(a, b, c);然后执行如下sql:

select * from T where b = '1' and c = '3'

5.7中不会走这个复合索引。

8.0中如果a字段仅有几个不同值的情况下走这个复合索引。

因此在8.0中可以把区分度高的字段建立在复合索引的最前面,比如性别。

2.2、降序索引

8.0新增降序索引:

index_c1_c2(c1, c2 desc);
# 会走索引排序
order by c1,c2 desc;
order by c1 desc,c2;# 不会走索引排序
order by c1, c2;

2.3、group by 隐式排序

group by a1

5.7会在分组的时候做隐式排序,即先排序再分组。

8.0则不会做隐式排序了。(要排序就需要指定加 order by)

2.4、隐藏索引

8.0新增可以把指定索引设置成隐藏索引的功能,类似于索引软删,一般是用于测试索引被删了的情况下会不会影响业务,如果确实不影响,这时就可以真正的把索引物理删除掉。

设置成隐藏索引的效果:sql查询时不会走这个索引,就算声明force index也不会走这个索引。但是索引物理是存在的。

隐藏索引可以session级临时开启使用。

2.5、函数索引

5.7中对索引字段使用了函数后会导致索引失效。

8.0新增了函数索引的功能,专门用于给函数生效索引的情况:

# 给c1字段加一个UPPER()函数的索引,这个函数的作用是转为大写。
idx_upper_c1(UPPER(c1))

2.6、buffer pool大小自适应参数

8.0中新增该参数innodb_dedicated_server默认关闭,设置成开启时,会自己尽量的去扩大内存占用,尽量的使用上机器资源,一般在一台仅部署了MySQL的机器中开启。

2.7、死锁检查

死锁检查参数innodb_deadlock_detect是默认开启的,在生产环境下应该避免死锁,且锁等待时间不应该设置过长。 因此8.0提供了额外的可以关闭该死锁参数的接口。

2.8、undo log不再使用表空间

5.7的undo log其实是存在MySQL的系统表里面的,8.0就单独移出来,存在磁盘文件undo文件中了。

2.9、窗口函数

8.0新增了窗口函数,便于数据可以更好的进行分组、聚合。
关键字partition by over

相比于group by,窗口函数不会合并结果。

2.10、DDL操作原子化

当t4表不存在时,执行一下sql:

drop table t1, t4;

5.7中t1删除成功,t4删除失败。

8.0中t1、t4都删除失败。

http://www.dtcms.com/a/363942.html

相关文章:

  • 基于B_S结构的校园报修管理系统设计与实现(代码+数据库+LW)
  • 设置STS(Spring Tool Suite),在格式化代码时for循环中的冒号左右都加上一个空格
  • 移动端网页调试实战,Safari Web Inspector 深度使用与对比分析
  • 关于?问号占位符的分析(主要以PHP为例)
  • C# 中这几个主流的 ORM(对象关系映射器):Dapper、Entity Framework (EF) Core 和 EF 6
  • C#基础(⑥动态链接库DLL)
  • Python 中将 JSON 字符串转为对象的几种方法对比
  • (五)Python控制结构(循环结构)
  • 最快的 C 语言 JSON 库 - yyjson
  • 爬虫-----最全的爬虫库介绍(一篇文章让你成为爬虫大佬,爬你想爬)
  • 【鸿蒙心迹】从疑惑到热爱:我的鸿蒙开发启蒙
  • Java消息中间件(RocketMQ)
  • Linux 文本处理实战手册
  • 【专栏升级】大模型应用实战并收录RAG专题,Agent专题,LLM重构数据科学流程专题,端侧AI专题,累计63篇文章
  • Redis 哨兵 (基于 Docker)
  • YOLO 目标检测:YOLOv5网络结构、Focus、CSP、自适应Anchor、激活函数SiLU、SPPF、C3
  • 3.2-C++基础组件
  • Kafka面试精讲 Day 5:Broker集群管理与协调机制
  • 深度学习-----通过本地数据实现图片识别的训练
  • PS痕迹检测器:基于深度学习的图像篡改检测
  • 撤销修改 情况⼀:对于⼯作区的代码,还没有 add
  • 浏览器内存 (JavaScript运行时内存)存储的优劣分析
  • linux(cut,sort,uniq ,tr,sed,awk)命令介绍
  • 贝叶斯定理:理解概率更新与实际场景应用
  • 在VS Code中直接操控浏览器
  • 预算紧张?这5款低代码平台免费还好用!
  • 光储充一体化智慧能源平台助力某能投公司绿色能源转型
  • 【面试场景题】如何理解设计模式
  • three.js手机端的4种旋转方式
  • 有鹿巡扫机器人:智慧清洁时代的多面手