Mysql8.0和Mysql5.0的区别与相互转化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql8.0和Mysql5.0的区别与相互转化

一、两者区别


1.性能提升级


官方表示MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在读/写工作负载、IO 密集型工作负载、以及高竞争工作负载时相比MySQL5.7有更好的性能。


2.更强的NoSQL文档支持


MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的ACID合规性。


3.窗口函数


也就是在满足某种条件的记录集合上执行的特殊函数。它可以用来实现若干新的查询方式。窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而 是将结果放回多行当中。即窗口函数不需要GROUP BY。窗口函数的使用,将大大提高相关的分析型场景的效率。


4.UTF-8编码


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


5.隐藏索引


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


6.持久化设置


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


7.重构BLOB


重构BLOB加速了片段读取/更新操作,可以加速JSON数据的操作。大幅改进了对JSON的支持,添加了基于路径查询参数从JSON字段中抽取数据的JSON_EXTRACT()函数,以及用于将数据分别组合到JSON数组和对象中的JSON_ARRAYAGG()和JSON_OBJECTAGG()聚合函数。


8.事务性数据字典


完全脱离了MyISAM存储引擎,真正将数据字典放到InnoDB中的一些表中,不再需要 FRM、TRG、PAR 等文件;Information Schema现在以数据字典表的一个视图出现。也就是原则上可以不需要MyISAM数据表类型,系统表都可以放到InnoDB之中。


9.SQL角色


可以创建角色,给用户设置或去除角色,大大方便权限的管理。


详见:MySQL 8.0的用户和角色管理


10.除去查询缓存


首先,查询缓存的效果取决于缓存的命中率,只有命中缓存的查询效果才能有改善,因此无法预测其性能。其次,查询缓存的另一个大问题是它受到单个互斥锁的保护。在具有多个内核的服务器上,大量查询会导致大量的互斥锁争用。


详见:知识点 | 为何从8.0开始取消了MySQL查询缓存Query Cache?


f5c2ef7133fa4c739e12bb184b09d81f.png


二、两者转化


1.驱动包下载


Mysql5.0驱动包

链接:https://pan.baidu.com/s/1jyiRME-d2cHPyUilYH6MYA

提取码:jzru

Mysql8.0驱动包

链接:https://pan.baidu.com/s/1NkjhYej3drzahGsS4L7GTQ

提取码:qug5


2.数据库配置


1.Mysql5.0的DRIVER是没有cj的,Mysql8.0是有cj的。


2.Mysql5.0的URL问号后面是useSSL=false&useUnicode=true&characterEncoding=utf-8,Mysql8.0问号后面是serverTimezone=UTC。


3.账号密码设置成你自己的账号密码。这里要注意一下,有很多同学用数据库的账号密码来登录系统,这是不对的。系统的账号密码在数据库的表里面。


Mysql5.0配置

//以下是mysql5.0版本的配置
// 数据库地址
private String DRIVER = "com.mysql.jdbc.Driver";
// 数据库地址
private String URL = "jdbc:mysql://localhost:3306/swing_warehouse?useSSL=false&useUnicode=true&characterEncoding=utf-8";
// 数据库用户名
private String USER = "root";
// 数据库密码
private String PASS = "";
//以上是mysql5.0版本的配置

Mysql8.0配置

//以下是mysql8.0版本的配置
// 数据库地址
private String DRIVER = "com.mysql.cj.jdbc.Driver";
// 数据库地址
private String URL = "jdbc:mysql://localhost:3306/swing_warehouse?serverTimezone=UTC";
// 数据库用户名
private String USER = "root";
// 数据库密码
private String PASS = "admin";

三、数据库测试类


有很多同学的代码没有问题,可能自己的数据库配置写错了。这时候你怎么办呢?你需要在你的代码里面新建数据库测试类,用来测试你的数据库配置。

package com.sjsq;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTEST {
    // 数据库地址
    public static String DRIVER = "com.mysql.cj.jdbc.Driver";
    // 数据库地址
    public static String URL = "jdbc:mysql://localhost:3306/world?serverTimezone=UTC";
    // 数据库用户名
    public static String USER = "root";
    // 数据库密码
    public static String PASS = "admin";
    // 主函数
    public static void main(String[] args) {
        try {
            Class.forName(DRIVER);
            Connection con = DriverManager.getConnection(URL, USER, PASS);
            Statement stet = con.createStatement();
            //我的数据库Person中的表student,改成你自己的表
            String sql = "select count(*) from city;";
            ResultSet rs = stet.executeQuery(sql);
            int count = 0;
            while (rs.next()) {
                count = rs.getInt(1);
            }
            System.out.print("您的city表的条数为:");
            System.out.println(count);
            con.close();
        } catch (
                Exception e) {
            e.printStackTrace();
        }
    }
}


四、参考资料


CSDN博主:猿图笔记的博客_CSDN博客-mysql,IT,shell领域博主


文章来源:MySQL8.0 和 MySQL5的区别_猿图笔记的博客-CSDN博客


五、版权备注


如有侵权请联系我删除!


六、支持博主


如果您觉得这篇文章对您有用,博客关注加点赞。


如果您想看一些视频,那么你可以搜索B站:水坚石青!


祝您身心健康,阖家辛福,万事如意!



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
3月前
|
存储 关系型数据库 MySQL
ES的全文索引和MySQL的全文索引有什么区别?如何选择?
【8月更文挑战第26天】ES的全文索引和MySQL的全文索引有什么区别?如何选择?
304 5
|
2月前
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
352 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
27天前
|
存储 SQL 关系型数据库
mysql中主键索引和联合索引的原理与区别
本文详细介绍了MySQL中的主键索引和联合索引原理及其区别。主键索引按主键值排序,叶节点仅存储数据区,而索引页则存储索引和指向数据域的指针。联合索引由多个字段组成,遵循最左前缀原则,可提高查询效率。文章还探讨了索引扫描原理、索引失效情况及设计原则,并对比了InnoDB与MyISAM存储引擎中聚簇索引和非聚簇索引的特点。对于优化MySQL性能具有参考价值。
|
3月前
|
数据可视化 关系型数据库 MySQL
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
本文介绍了在MySQL 8.0+版本中创建和管理用户的详细步骤,包括通过命令行进入MySQL、创建数据库、用户及授权等操作,并提供了具体命令示例。适合初学者参考学习,帮助实现系统的权限管理和安全控制。
1189 2
【MySQL】MySQL8.0 创建用户及授权 - 看这篇就足够了
|
29天前
|
存储 JSON 关系型数据库
MySQL 5.x和MySQL 8.x到底有什么区别?
本文详细对比了MySQL 5.x与MySQL 8.x的主要区别,包括存储引擎改进、性能提升、SQL语法增强(如窗口函数、CTE、JSON支持)、安全性和权限管理、并发及锁机制、InnoDB引擎增强、复制与高可用性等方面的显著差异。通过具体示例展示了8.x版本在企业级应用和高并发场景下的优越表现,建议有条件时尽早升级至MySQL 8.x以充分利用其新特性。
|
29天前
|
存储 关系型数据库 MySQL
Mysql行格式DYNAMIC和COMPACT区别
总之,选择哪种行格式取决于具体的应用场景,如数据类型分布、读写比例、存储与性能需求等。在处理大量文本或二进制数据且对存储空间敏感的应用中,DYNAMIC格式可能是更好的选择;而对于混合型数据且对读取性能有一定要求的场景,COMPACT格式可能更合适。在设计数据库时,评估这些因素并进行适当测试,可以帮助确定最适合的行格式。
70 0
|
3月前
|
前端开发 关系型数据库 MySQL
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
这篇文章讨论了`com.mysql.jdbc.Driver`和`com.mysql.cj.jdbc.Driver`两个MySQL驱动类的区别,指出`com.mysql.jdbc.Driver`适用于MySQL 5的`mysql-connector-java`版本,而`com.mysql.cj.jdbc.Driver`适用于MySQL 6及以上版本的`mysql-connector-java`。文章还提到了在实际使用中如何根据MySQL版本选择合适的驱动类。
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
|
3月前
|
存储 SQL 关系型数据库
OceanBase与MySQL有何区别?
【8月更文挑战第12天】OceanBase与MySQL有何区别?
644 3
|
3月前
|
SQL 关系型数据库 MySQL
Mysql中from多表跟join表的区别
Mysql中from多表跟join表的区别
188 0