mysql8.0新特性详解

news2024/12/24 11:40:10

一、my.ini或my.cnf的全局参数

 一个连接最少占用内存是256K,最大是64M,如果一个连接的请求数据超过64MB(比如排序),就会申请临时空间,放到硬盘上。

#最大连接数
max_connections=3000
#最大用户连接数
max_user_connections=2980

如果MySQL的连接数达到max_connections时,新的请求将会被存在堆栈中,等待某一连接释放资源,该堆栈数量即back_log,如果等待连接的数量超过back_log,将被拒绝。

back_log=300

指的是app应用通过jdbc连接mysql进行操作完毕后,空闲300秒后断开,默认是28800,单位秒,即8个小时。

wait_timeout=300

指的是mysql client连接mysql进行操作完毕后,空闲300秒后断开,默认是28800,单位秒,即8个小时。

interactive_timeout=300

此参数用来设置innodb线程的并发数,默认值为0表示不被限制,若要设置则与服务器的CPU核心数相同或是CPU的核心数的2倍,如果超过配置并发数,则需要排队,这个值不宜太大,不然可能会导致线程之间锁争用严重,影响性能。

innodb_thread_concurrency=64

 innodb存储引擎buffer pool缓存大小,一般为物理内存的60%-70%。

innodb_buffer_pool_size=40G

行锁锁定时间,默认50s,根据公司业务定,没有标准值。

innodb_lock_wait_timeout=10
#连接级别参数 一个connection消耗4M内存
sort_buffer_size=4M
join_buffer_size=4M

#redo log直接写入磁盘
innodb_flush_log_at_trx_commit=1
#binlog直接同步到磁盘
sync_binlog=1

二、mysql8.0新特性详解

1、新增降序索引

create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));#c2为降序排列
insert into t1 (c1,c2) values(1, 10),(2,50),(3,50),(4,100),(5,80);

explain select * from t1 order by c1,c2 desc;
explain select * from t1 order by c1 desc,c2;
explain select * from t1 order by c1 desc,c2 desc;
explain select * from t1 order by c1,c2;

 第一条sql就是用到降序索引,第二条sql是反向扫描索引,第三、四条sql没有按照索引相同或相反方向排序,所以是文件排序

2、group by不再隐式排序

mysql8.0之前的版本都会根据group by的字段做排序,mysql8.0则不会, 排序需要自己指定排序列

3、增加隐藏索引

有时候我们想删除索引,而又不确定索引是不是真的没地方用到了,可以先设置索引不可见

create table t2(c1 int, c2 int, index idx_c1(c1), index idx_c2(c2) invisible);

explain select * from t2 where c1=1;
explain select * from t2 where c2=1;

 不可见索引字段c2没用到索引

set session optimizer_switch="use_invisible_indexes=on";#在会话级别设置查询优化器可以看到隐藏索引

 再次执行使用c2列作为条件查询就可以用到索引

explain select * from t2 where c2=1;

 4、新增函数索引

create table t3(c1 varchar(10),c2 varchar(10));
create index idx_c1 on t3(c1);     #创建普通索引
create index func_idx on t3((UPPER(c2)));  #创建一个大写的函数索引

explain select * from t3 where upper(c1)='TEST';
explain select * from t3 where upper(c2)='ZHUGE';  #使用了函数索引

 5、innodb存储引擎select for update跳过锁等待

 

6、新增innodb_dedicated_server自适应参数

mysql开启此参数会检测到的内存大小自动配置innodb_buffer_pool_size,innodb_log_file_size等参数,会占用其它应用的内存资源

show variables like '%innodb_dedicated_server%';   #默认是OFF关闭,修改为ON打开

7、死锁检查控制

show variables like '%innodb_deadlock_detect%';  #默认是打开的

8、undo文件不再使用系统表空间

默认创建2个UNDO表空间,不再使用系统表空间。

9、 binlog日志过期时间精确到秒

之前是天,并且参数名称发生变化. 在8.0版本之前,binlog日志过期时间设置都是设置expire_logs_days参数,而在8.0版本中,MySQL默认使用binlog_expire_logs_seconds参数。

10、窗口函数(Window Functions):也称分析函数

# 创建一张账户余额表
CREATE TABLE `account_channel` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
  `channel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '账户渠道',
  `balance` int DEFAULT NULL COMMENT '余额',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

# 插入一些示例数据
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('1', 'test', 'wx', '100');
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('2', 'test', 'alipay', '200');
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('3', 'test', 'yinhang', '300');
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('4', 'test1', 'wx', '200');
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('5', 'test1', 'alipay', '100');
INSERT INTO `test`.`account_channel` (`id`, `name`, `channel`, `balance`) VALUES ('6', 'test2', 'wx', '500');

现在表数据是这样的

 

一般情况下查询是这样的

 

用窗口函数查询 

 

11、专用窗口函数

  • 序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()
  • 分布函数:PERCENT_RANK()、CUME_DIST()
  • 前后函数:LAG()、LEAD()
  • 头尾函数:FIRST_VALUE()、LAST_VALUE()
  • 其它函数:NTH_VALUE()、NTILE()

12、默认字符集由latin1变为utf8mb4

在8.0版本之前,默认字符集为latin1,utf8指向的是utf8mb3,8.0版本默认字符集为utf8mb4,utf8默认指向的也是utf8mb4。

13、MyISAM系统表全部换成InnoDB表

将系统表(mysql)和数据字典表全部改为InnoDB存储引擎,默认的MySQL实例将不包含MyISAM表,除非手动创建MyISAM表。

14、元数据存储变动

MySQL 8.0删除了之前版本的元数据文件,例如表结构.frm等文件,全部集中放入mysql.ibd文件里。可以看见下图test库文件夹里已经没有了frm文件。

15、自增变量持久化

自增id情况下,比如当前最大id是8,这时候把id为1的记录id值改成9,再次新增数据时,mysql8.0之前会报错,mysql8.0才解决这个问题

16、DDL原子化

InnoDB表的DDL支持事务完整性,要么成功要么回滚。

比如drop table t1,t2;语句,t2表不存在,在mysql8.0之前就把t1表删除了,mysql8.0会回滚,t1表还在

17、参数修改持久化

 MySQL 8.0版本支持在线修改全局参数并持久化,通过加上PERSIST关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启MySQL时,可以从该配置文件获取到最新的配置参数。set global 设置的变量参数在mysql重启后会失效。

set persist innodb_lock_wait_timeout=25;#系统会在数据目录下生成一个包含json格式的mysqld-auto.cnf 的文件,格式化后如下所示,当my.cnf 和mysqld-auto.cnf 同时存在时,后者具有更高优先级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能饮品机器人的市场现状与前景未来,点赋科技与您共同期待

引言: 近年来,智能饮品机器人行业迅猛发展,成为引人瞩目的新兴市场。然而,这个行业的市场现状到底如何?它的前景又将如何发展?让点赋科技带大家一起来看看。 市场现状: 智能饮品机器人市场在过去…

解锁高效部署!快速搭建Kubernetes集群,提升团队生产力!

1 MacOS 1.1 下载 docker-desktop 从 docker 下载 docker-desktop (opens new window),并完成安装 1.2 启用 k8s 集群 启动 docker-desktop,打开preference 面板 切换到 Kubernetes 标签页,并勾选启动 Enable Kubernetes,点击…

nginx 入门 (b站IT楠老师学习笔记)

文章目录 Nginx 入门 (b站IT楠老师学习笔记)一 基础了解1、下载nginx安装包2. nginx 可以提供的服务3. nginx 的优点4. 应用场景 二 实战2.1 基础检查以及配置文件结构了解2.2 main全局配置2.3 events模块2.4 http服务器配置2.5虚拟主机配置详解2.5.1 ht…

el-pagination分页查询封装

需求&#xff1a;因为需要用到表单查询的地方太多了&#xff0c;所以为了避免每个页面都写分页组件&#xff0c;直接封装好调用就完事了&#xff0c;简简单单 1.创建Pigination.vue公用组件 <template><div :class"{hidden:hidden}" class"paginatio…

AD中修改一个元器件的所有焊盘大小

1.首先&#xff0c;选中其中一个焊盘。 2.查找相似对象 3.修改component为same 4.修改X size和Y size为same 5.确定 6.修改Pad Stack中的x/y 注&#xff1a;component可以不用改为same&#xff0c;用any就是查找和这个焊盘大小类似的对象。

力扣1768.交替合并字符串(java模拟法)

题目描述&#xff1a; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 问题分析&#xff1a; 我们可以直…

servlet 监听器

做法: 在web.xml中: 或

矩形中的正方形:探究力扣最大正方形问题的奥秘

本篇博客会讲解力扣“1725. 可以形成最大正方形的矩形数目”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;对于每一个矩形&#xff0c;切分出来的最大正方形的边长是矩形的长和宽的较小值。我们需要维护最大的正方形边长&#xff0c;并统计数目。 我们可以写…

Verilog基础之十、计数器实现

目录 一、前言 二、工程设计 2.1 设计代码 2.2 综合结果 ​2.3 仿真结果 一、前言 计数器是较为基础的逻辑&#xff0c;很多其他逻辑可依靠计数器实现&#xff0c;如控制器&#xff0c;分频。原理为通过统计时钟脉冲的个数来输出计数值。 二、工程设计 2.1 设计代码 工…

实验 09 线性回归与波士顿房价预测

文章目录 实验 09 线性回归与波士顿房价预测一、实验目的二、实验设备三、实验内容3.1 了解数据3.2 分析数据3.3 建立模型&#xff08;一&#xff09;使用一个变量进行预测&#xff08;二&#xff09;使用多元线性回归分析进行预测 实验 09 线性回归与波士顿房价预测 一、实验…

Dubbo【Dubbo实战(整合Mybaits-plus配置、接口、集成Thymeleaf) 】(五)-全面详解(学习总结---从入门到深化)

目录 ​编辑 Dubbo实战_整合Mybaits-plus配置 Dubbo实战_创建添加用户接口 Dubbo实战_查询用户业务接口 Dubbo实战_更新用户业务接口 Dubbo实战_删除用户业务接口 Dubbo实战_集成Thymeleaf Dubbo实战_用户添加业务消费者实现 Dubbo实战_用户查询业务消费者实现 Dubbo实战_…

R带参数运行

rm(listls()) suppressPackageStartupMessages({library(getopt) })# getopt(),是getopt包的函数&#xff0c;需要先按照getopt包 # # getopt(spec NULL, opt commandArgs(TRUE),command get_Rscript_filename(), usage FALSE,debug FALSE) # # spec&#xff1a;一个4或…

linux suse12 安装mysql

1.下载mysql https://dev.mysql.com/downloads/mysql/ 2.选中mysql版本 对选中的版本进行下载 也可以在linux服务器上直接下载&#xff1a;wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 3.把下载好的文件放到/usr/local…

mac上的vscode设置用滚轮来调节编辑页面大小

mac上的vscode设置用滚轮来调节编辑页面大小 问题背景 今天在mac上安装了vscode&#xff0c;刚想编写代码&#xff0c;但是突然发现无法用ctrl鼠标的滚轮来进行控制 代码编辑区域字体的大小。 解决方法 经过查找资料&#xff0c;发现在设置的配置文件中&#xff0c;有一个配…

前后端分离模式开发的BS电子病历编辑器源码(Java)

电子病历系统&#xff0c;是医学专用系统。医院通过电子病历以电子化方式记录患者就诊的信息&#xff0c;包括&#xff1a;首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等&#xff0c;其中既有结构化信息&#xff0c;也有非结构化的自由文本&#xff0c;还有图形…

HOT19-螺旋矩阵

leetcode原题链接&#xff1a;螺旋矩阵 题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例…

通过USB和wifi连接真机编写第一个脚本

目录 一、连接手机 1、通过usb数据线连接手机 2、无线连接手机 二、编写第一个脚本 一、连接手机 1、通过usb数据线连接手机 数据线连接手机并允许调试 cmd命令行执行&#xff1a; adb devices 如果没有显示device信息&#xff0c;请检查&#xff1a; 手机是否开启usb调…

element的时间控件默认值为当前时间

vue代码 <el-form-item label"验收时间" prop"checkAcceptTime"><el-date-picker clearablev-model"form.checkAcceptTime"type"datetime"value-format"yyyy-MM-dd HH:mm:ss"placeholder"请选择验收时间"…

微信发布新规:这功能,要收费了

近日&#xff0c;微信小程序发布《关于手机号快速验证组件升级及收费的通知》&#xff0c;通知中指出&#xff1a;手机号验证能力在原有基础上&#xff0c;新增手机号实时验证能力。 同时&#xff0c;为了平衡技术服务与运营成本&#xff0c;平台将于2023年8月26日起对手机号验…

SQL Server,想要查询某表数据,但表名存放在别的表内,SQL语句怎么写?

动态SQL查询案例 需求描述&#xff1a; 原始的表名、表的属性描述信息在summary表中&#xff0c;每个表有类似的字段&#xff1a;id、price、size&#xff0c;通过SQL能查询到所有表的如下记录&#xff1a; 表名、表属性名、最低价格、最低价格对应ID、最大尺寸、最大尺寸对应…