目录

1、MySQL版本-- 》5版本

1.1、InnoDB存储引擎

1.2、存储过程和触发器

1.3、视图

1.4、增强的查询优化器

1.5、增强的索引支持

1.6、外键支持

1.7、分区表和分布式查询

2、MySQL版本-- 》8版本

2.1、性能

2.2、字符编码改变

2.3、持久化保存

2.4、隐藏索引和降序索引

3、MySQL 5和MySQL 8的区别

3.1、JSON支持:

3.2、插件化架构:

3.3、性能提升

3.4、安全增强

3.5、支持的SQL语法

3.6、Unicode支持

3.7、索引算法改进

4、配置及兼容性

4.1、驱动与连接配置

4.2、移除特性

总结


前言

        MySQL是一款开源、免费、快速稳定的关系型数据库,被广泛地应用在大量的Web应用程序中。

当执行一条sql的时候,会经过以下流程:

关于两个不同版本的区别,可参考如下:


1、MySQL版本-- 》5版本

发布于2005年。

以下是MySQL 5的一些主要特点和功能:

1.1、InnoDB存储引擎

        MySQL 5引入了InnoDB存储引擎作为默认的事务引擎,提供了ACID(原子性、一致性、隔离性和持久性)事务支持,以及行级锁定和多版本并发控制(MVCC)等高级特性。

1.2、存储过程和触发器

        MySQL 5引入了存储过程和触发器的支持,使得可以在数据库中使用更复杂的业务逻辑和数据处理操作。

1.3、视图

        MySQL 5引入了视图的支持,允许用户创建虚拟表,从而简化查询和数据访问。

1.4、增强的查询优化器

        MySQL 5对查询优化器进行了改进,提供了更好的查询执行计划生成和查询性能。

1.5、增强的索引支持

        MySQL 5引入了更多类型的索引,包括全文索引、B-Tree索引哈希索引,以提高查询效率。

1.6、外键支持

        MySQL 5开始支持外键约束,使得在多表关联查询和数据完整性方面更加灵活和方便。

1.7、分区表和分布式查询

        MySQL 5引入了分区表的支持,可以将大型表分割成若干个子表,以提高查询和维护的效率。此外,MySQL 5还引入了分布式查询的功能,允许在多个MySQL实例之间进行查询操作。

注意: MySQL 5是一个大版本,如MySQL 5.0、MySQL 5.1、MySQL 5.5等。每个小版本都对功能和性能进行了不同程度的改进和优化。


2、MySQL版本-- 》8版本

        MySQL 8于2018年发布,引入了众多新功能和改进,以提供更高性能、更强安全性和更丰富的功能。

2.1、性能

        MySQL 8 采用了新版InnoDB存储引擎,具有更好的性能表现。官方表示MySql 8.0的速度要比MySql5.7快2倍,特别是在高并发与大数据的环境下,其性能迅速提升,支持高级功能如JSON、空间索引全文索引,从而可以提供更好的查询体验。

InnoDB 引擎在 8.x 中默认启用 多线程日志刷盘 和 动态缓冲池调整,显著提升写入性能。

2.2、字符编码改变

        从MYSQL8.0开始,使用utfmb4作来MySQL的默认字符集,并支持Unicode 9 ,默认字符集将从 latin1 改为 utf8mb4,默认定序将从latin1_swedish_ci 改为 utf8mb4_800_ci_ai;

        支持存储更广泛的Unicode字符,包括表情符号和特殊字符等。

2.3、持久化保存

        MySQL8.0 新增 SET PERSIST 的命令,该命令的配置值保存到数据目录下的mysqld-auto.cnf文件中,待重启后,读取该文件,用其中的配置覆盖缺省的配置文件,补充了SET GLOBAL 命令只能临时生效的不足;

2.4、隐藏索引和降序索引

        可以将索引通过命令设置未隐藏或显示。对于被隐藏的索引,它不会被查询优化器所使用,我们可以使用这一功能,对相关的查询进行性能调试,通过 隐藏 或 显示,分析数据库性能差异的原因,同时也可以去除无效的索引。

1:通过"ALTER INDEX ... INVISIBLE"可临时禁用索引进行性能调试。

2: 降序索引 优化了 "ORDER BY ... DESC"查询的效率。

-- 降序索引
CREATE INDEX idx_salary_desc ON employees (salary DESC);-- 隐藏索引(可用于测试索引效果)
ALTER TABLE employees ALTER INDEX idx_name INVISIBLE;

3、MySQL 5和MySQL 8的区别


以下是MySQL 5和MySQL 8之间的一些主要区别:

3.1、JSON支持:

        MySQL 5对JSON支持较弱,只能存储和查询JSON字符串,而MySQL 8引入了更强大的JSON功能,包括对JSON文档的索引和查询功能。

        MySQL 8 提供 原生 JSON 数据类型 和丰富的操作函数(如 “JSON_EXTRACT”、“JSON_SET”),支持索引加速查询。

如下图所示:

-- MySQL 5:需手动解析字符串
SELECT * FROM users WHERE JSON_UNQUOTE(JSON_EXTRACT(profile, '$.age')) > 30;-- MySQL 8:直接使用路径查询
SELECT * FROM users WHERE profile->"$.age" > 30;
-- MySQL 8.0 JSON示例
CREATE TABLE products (id INT PRIMARY KEY,details JSON
);INSERT INTO products VALUES 
(1, '{"name": "Laptop", "specs": {"cpu": "i7", "ram": "16GB"}}');SELECT id,details->>"$.name" as product_name,details->>"$.specs.cpu" as cpu
FROM products;

3.2、插件化架构:

        MySQL 8引入了插件式存储引擎架构,使得用户可以根据具体需求选择不同的存储引擎,比如InnoDB、MyISAM等。而MySQL 5则相对较为有限,大多数情况下使用的是InnoDB引擎。

3.3、性能提升

MySQL 8在性能方面进行了许多改进,包括更好的查询优化器、索引算法的改进、并行查询等,从而提供更高的查询速度和吞吐量。

3.4、安全增强

        MySQL 8引入了许多安全增强功能,如更加严格的密码策略、默认启用的SSL/TLS支持、资源组和权限控制的增强等,以提供更高的数据安全性。

3.5、支持的SQL语法

        MySQL 8增加了对一些新的SQL语法的支持,如窗口函数和CTE(公共表达式,即WITH语句),使得复杂查询更加方便和灵活。

-- MySQL 8.0窗口函数示例
SELECT employee_name,department,salary,RANK() OVER (PARTITION BY department ORDER BY salary DESC) as dept_rank
FROM employees;
-- MySQL 8.0 CTE示例
WITH dept_stats AS (SELECT department, AVG(salary) as avg_salaryFROM employeesGROUP BY department
)
SELECT * FROM dept_stats WHERE avg_salary > 5000;

3.6、Unicode支持

        MySQL 8默认使用utf8mb4字符集,支持存储更广泛的Unicode字符,包括表情符号和特殊字符等。

-- MySQL 8.0默认支持完整Unicode
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100)  -- 默认utf8mb4,支持emoji等
);

3.7、索引算法改进

        MySQL 8引入了更高效的索引算法(R-tree和B-tree索引的改进),从而提升空间数据类型和文本数据类型的查询性能。


4、配置及兼容性

4.1、驱动与连接配置

驱动类:MySQL 5使用com.mysql.jdbc.Driver,而MySQL 8需改用com.mysql.cj.jdbc.Driver。

连接URL:MySQL 8需在JDBC URL中指定时区参数(如?serverTimezone=UTC),否则可能报错

4.2、移除特性

MySQL 8.0移除了一些旧特性,如:

  • 不再支持password()函数

  • 移除了查询缓存,可参考:Mysql中select查询语句的执行过程_mysql查询过程-CSDN博客https://blog.csdn.net/weixin_50055999/article/details/148472938?spm=1011.2415.3001.5331


总结

        MySQL 8.0相比5.0在性能、功能、安全性和SQL标准兼容性方面都有显著提升,特别是窗口函数、CTEJSON支持使得复杂查询和半结构化数据处理更加方便。


参考文章:

1、数据库系列---mysql5和8的区别_mysql8与mysql5区别-CSDN博客https://blog.csdn.net/weixin_42978994/article/details/133676940?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522691a7d4f3f5f160a593559052b73019e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=691a7d4f3f5f160a593559052b73019e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-133676940-null-null.142^v102^pc_search_result_base1&utm_term=mysql8%E5%92%8Cmysql5%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

2、MySQL 5和MySQL 8的区别_mysql5-CSDN博客https://blog.csdn.net/weixin_72610956/article/details/133795411?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522691a7d4f3f5f160a593559052b73019e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=691a7d4f3f5f160a593559052b73019e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-133795411-null-null.142^v102^pc_search_result_base1&utm_term=mysql8%E5%92%8Cmysql5%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现简单的地图绘制与标记20250705

用python语言绘制显示范围不大于上海地区的地图 您的代码实现了一个 上海武馆地理信息系统,主要功能是通过可视化地图展示上海各区的传统武术馆信息。 通过和deeps对话一晚上实现的,我就是描述修改 高德的api key我搞了一会,平时很少接触密…

Qt开发:QListWidget的介绍和使用

文章目录 一、QListWidget的简介二、QListWidget的基本用法三、QListWidget的数据操作2.1 插入数据2.2 查找数据2.3 选项设置 四、QListWidget的信号与槽 一、QListWidget的简介 QListWidget 是 Qt 框架中用于显示和操作条目列表的控件,它是 QListView 的一个子类&a…

React Native 亲切的组件们(函数式组件/class组件)和陌生的样式

写多了taro, 看见react native中的组件好亲切啊,几乎一模一样。 一、函数式组件 — 常用 1)无状态,每次刷新都是生成一个新的状态 2)基于状态变化的管理 3)简洁,代码少,易于服用 import Reac…

Spring boot之身份验证和访问控制

本文笔记跟随于遇见狂神说老师的视频 一.SpringSecurity(安全) 1.相关概念 在web开发中,安全第一位,有简单的方法,比如:拦截器,过滤器 也有安全框架,比如:SpringSecu…

C#使用开源框架NetronLight绘制流程图

之前使用MindFusion.Diagramming绘制流程图确认很方便,只能试用版,如果长期使用,需要收费。 C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例_c# 画流程图控件-CSDN博客 这里找一个简易开源框架NetronLight,GIT下载地…

支持向量机(SVM)在脑部MRI分类中的深入应用与实现

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

AtCoder AT_abc413_c [ABC413C] Large Queue 题解

题目大意 有一个初始为空的序列 A A A, Q Q Q 次操作分为两类: 第一类:将 c c c 个 x x x 放到 A A A 的末尾。第二类:将前 k k k 个数的和输出并移除它们。 思路 这是一个求和问题,想到的第一个思路是前缀和…

「源力觉醒 创作者计划」_文心大模型开源:开启 AI 新时代的大门

在人工智能的浩瀚星空中,大模型技术宛如一颗璀璨的巨星,照亮了无数行业前行的道路。自诞生以来,大模型凭借其强大的语言理解与生成能力,引发了全球范围内的技术变革与创新浪潮。百度宣布于 6 月 30 日开源文心大模型 4.5 系列&…

Git 怎么判断是否冲突?

📌 [Q&A] Git 怎么判断是否冲突? Git 使用的是三路合并算法(Three-way Merge),它比较: 共同祖先提交(base) 当前分支的改动(ours) 被合并分支的改动&am…

在sf=0.1时测试fireducks、duckdb、polars的tpch

首先,从https://github.1git.de/fireducks-dev/polars-tpch下载源代码包,将其解压缩到/par/fire目录。 然后进入此目录,运行 SCALE_FACTOR0.1 ./run-fireducks.sh,脚本会首先安装所需的包,编译tpch的数据生成器&#x…

AWS多账号管理终极指南:从安装配置到高效使用

引言:为什么需要多账号管理? 在云计算时代,企业使用多个AWS账号已成为最佳实践。根据AWS Well-Architected Framework,多账号架构可以: 实现环境隔离(生产/测试/开发)满足不同业务单元的安全要求简化资源管理和成本分配符合合规性要求(如SOC2、ISO27001)本文将手把手…

UE5音频技术

1 . 调制器 Modulator 调整参数 调制器可以使声音每次音高都不一样 2. 随机 节点 3. 混音器 Mixer 混合两个音频 4. 串联器 Concatenator 按循序播放 5.多普勒 Doppler 根据距离音频变化 6.包络线 Enveloper 武器充能发射 7.混响

创客匠人视角:创始人 IP 打造与知识变现的培训赋能体系

在知识付费行业进入精耕期的当下,为何部分企业投入大量培训却收效甚微?创客匠人 CEO 老蒋通过服务 5W 知识博主的经验指出:唯有将创始人 IP 思维与培训体系深度融合,才能让培训成为知识变现的 “转换器”。一、内训体系重构&…

基于Java+SpringBoot的三国之家网站

源码编号:S591 源码名称:基于SpringBoot的三国之家网站 用户类型:双角色,用户、管理员 数据库表数量:20 张表 主要技术:Java、Vue、ElementUl 、SpringBoot、Maven 运行环境:Windows/Mac、…

推荐算法系统系列五>推荐算法CF协同过滤用户行为挖掘(itembase+userbase)

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 配套视频 推荐算法系统实战全系列精品课【陈敬雷】 文章目录 推荐算…

pytest之fixture中yield详解

1. fixture——yield介绍 fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作。前面通过fixture实现了在每个用例之前执行初始化操作,那么用例执行完之后,如需要清除数据(或还原)操作,…

Nginx 动静分离原理与工作机制详解:从架构优化到性能提升

前言:在 Web 应用架构不断演进的今天,如何高效处理日益增长的访问量和复杂的业务逻辑,成为开发者必须面对的挑战。当我们在浏览器中打开一个网页,那些直观可见的 HTML 页面、精美绝伦的图片、流畅运行的 JavaScript 脚本&#xff…

介绍electron

一、Electron 是什么? Electron 是一个基于 Chromium 和 Node.js 的框架,允许开发者使用前端技术(HTML/CSS/JavaScript)构建原生桌面应用。其核心优势在于: 跨平台:一次开发,生成 Windows、ma…

DeepSeek与诡秘之主

1、大模型像个腐儒 其实从大模型的训练方式来看,它算不上天赋异禀。尤其在成长阶段,大模型那种种令人惊艳的表现,足够让人误以为这是个天才。 可人这种生物,注定是贪婪的。在大模型成长后期,伴随着各种技巧的验证&…

动手实践OpenHands系列学习笔记5:代理系统架构概述

笔记5:代理系统架构概述 一、引言 AI代理系统是一种能够自主执行任务的智能软件架构,OpenHands作为AI驱动的软件开发代理平台,拥有完整的代理系统架构设计。本笔记将探讨AI代理架构的基本原理,并通过分析OpenHands核心架构&…