Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MYSQL 8 VS MYSQL 5.7 到底ORACLE是怎么想的?(一)

MYSQL 8 VS MYSQL 5.7 到底ORACLE是怎么想的?(一)

作者头像
AustinDatabases
发布于 2019-10-29 15:51:49
发布于 2019-10-29 15:51:49
3.6K0
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

MYSQL 8 发布也是有些日子了,但使用的人数和单位都不多,原因大部分大企业,银行已经开始使用国内的自研的MYSQL 作为主力,同时MYSQL 5.7 在目前使用中并未出现什么重大的缺陷,并且周边的生态都是基于 5.6 5.7 的,所以更换MYSQL 8 是不是吃力不讨好的一件事情,另外网传,并且自己也测试了一些东西,发现MYSQL8 在某些方面尤其是查询的速度来说,并没有快到哪里去,反倒是有可能更慢。

到底MYSQL 8 有什么东西是MYSQL 5.7 没有的,或者说INNODB 在 5.X 版本和 8.X 版本之间的差异点在哪里。(部分信息来自 innodb team report)

下面是一些总结

1 data directory table 将被保护,不能被随意的访问,其意图也是很简单的,以下是原文,从原文中的意思获悉,MYSQL 8 的oracle的开发团队是不大喜欢你去动里面的东西,最好你不知道这里面的东西是最好的,这很ORACLE。

例如下面截图

之前是可以访问的,并且如果不能访问还可以设置 debug 参数,在访问,但现在不可以。

并且如果想从MYSQL 5.7 升级到 MYSQL 8 或经历以下几个过程

1 创建新的DD 表在 data directory 表空间

2 升级所有的表到新的表空间

3 升级你的UNDO 表空间

4 创建 SDI 到所有 IDB 文件 (之前有一篇说过SDI)

5 原有的5.7的 INNODB system table 将被删除

(反正看完这些,如果让我升级,我还是老老实实的数据基本的transfer吧)

对了 后面的跟一句,降级没门,并且PPT 里面说他们会控制期间可能的升级的失败的情况。

基于前边的一些东西,INNODB 的开发人员,提出我们还是可以让你看一些东西在MYSQL 8 中的,例如下面的语句

select * from innodb_tablespaces;

同时演讲者也给出一些往好的方面发展,以及之前未解决的一些头痛的问题已经接近了

例如 下面的在之前版本中的执行后不能立即生效的,现在都能立即生效

1 alter table name

2 set default

3 drop default

4 modify column

5 modify column

6 change column

7 change index option

基于之前的版本,中为什么添加字段是一件头痛的事情,主要是INNODB 不能有足够的metadata 存储在物理记录的页中。产生这个问题的主要原因是

1 ROW 格式中存在 redundant 模式

2 ROW 的META data 是存储在redo log 中。

所以MYSQL 8 后

1 metadata 改变只在transactinal 的 DD 中,不在会有重建表,拷贝表的事情,在进行alter table 的时候会添加新的选择 instant 选项并且支持 DYNAMIC COMPACT REDUNDANT 等格式的表。

当然这些也是有限制的,

1 添加列只能在最后 (这点终于和ORACLE 一样了,之前MYSQL 是可以随意添加列在你要的位置)

2 不支持压缩表

3 不支持全文索引

4 不支持临时表

新的临时表将有自己的空间 默认将给临时表的表空间分配 16K*5 的空间,会自动穿件 10个表结尾尾缀为 .ibt 的文件

对于UNDO 表空间也和原来的概念不一样了,你可以创建,调整,删除UNDO 表空间,并且默认UNDO 表空间是生成2个表空间,同时UNDO LOG 将不再会存储 system table space

同时在MYSQL 8 中的 information_schema也是添加了一些VIEW 例如可以查看每个数据页在 innodb buffer pool 中所 Cache 的INDEXC

在INNODB BUFFER POOL SIZE 中也有一些变化,变得更加的智能,例如如果物理内存小于 1G 则会使用默认的innodb 默认值,当物理内存在4G 以内,使用 50%的内存,如果超出使用 75%的内存,也可以说,以后你不会在为 innodb_buffer pool 这个设置费脑筋了,系统会给出他建议的的值并使用。

期间引擎的开发团队还建议,由于MYSQL 支持了TABLESPACE 有一段时间了,多个表空间在MYSQL 5.7 上回有一些问题例如报告找不到ibd文件的情况。在MYSQL 8.0上,可以使用 innodb_directories 来制定所有需要扫描的表空间,防止在启动时找不到ibd文件的情况。

另外还有一个截止目前被吐槽最多的 count 大表慢的问题,也会在MYSQL 8 中解决部分,例如 innodb-parallel-thread-count 参数可以并行扫描,更快的获得数据

除了上边被吐槽的,下面的一幅图也告知使用这MYSQL 8 在另一个性能问题吐槽点的改变。

有一些东西添加,就有一些东西要被清理

以下的一些配置将被清理出my,.cnf

innodb_file_format 你不需要选择文件的格式了

innodb_file_format_check

innodb_file_format_max

innodb_large_prefix

innodb_large_prefix

innodb_stats_sample_pages

innodb_locks_unsafe_for_binlog

innodb_checksums

innodb_support_sx

innodb_undo_logs

当然这些还远远没有完,但今天就到这里。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【精华】洞悉MySQL底层架构:游走在缓冲与磁盘之间
提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能对MySQL相关知识有一个系统的学习,导致不能形成知识体系。为此我撰写了这篇文章,试图让这些底层架构相关知识更加直观易懂:
cxuan
2020/06/12
2K1
来,看看MySQL 5.6, 5.7, 8.0的新特性
对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。
星哥玩云
2022/08/17
1.8K0
来,看看MySQL 5.6, 5.7, 8.0的新特性
MySQL - 存储引擎初探
存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎 。
小小工匠
2021/08/17
8280
mysql体系结构
2用户名密码验证(通过授权表做的验证数据库一启动,会把授权表加载到内存中 mysql.user mysql.db mysql.table_priv mysql.column_priv)
萧晚歌
2021/11/17
1.1K0
硬核万字图解 MySQL 表空间、Tables、Index、双写缓冲、Redo Log、Undo Log 原理
你好,见字如面。我是《Redis 高手心法》作者,腾讯云架构师同盟深圳区理事会成员、InfoQ 签约作者码哥,是一个手持菜刀砍电线,一路火花带闪电的靓仔。
码哥字节
2025/08/12
2.5K2
硬核万字图解 MySQL 表空间、Tables、Index、双写缓冲、Redo Log、Undo Log 原理
MySQL8.03 RC 已发布
MySQL开发团队非常高兴地宣布,第一个8.0 RC版本8.0.3现已可在dev.mysql.com下载(相对于8.0.2,8.0.1和8.0.0,8.0.3添加了一些新特性)。源代码可在GitHub获得。您可以在8.0.3发行说明中看到新版本的改变和bug修复的完整列表。下面是新版本的一些亮点。大家赶快体验吧!
阿炳数记
2019/02/27
1.1K0
为什么别人能用好 MySQL?万字详解其复杂原理
MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB 的内部实现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。
乔戈里
2020/04/23
7750
为什么别人能用好 MySQL?万字详解其复杂原理
MySQL表压缩和页压缩,难道只是空间压缩?
临近春节,相信每个公司都会进行全面巡检,无论是业务层还是数据库层,达到事前预防的目的;今天就来分享一下针对MySQL数据存储层面,在数据库存储来不及扩容的情况下,MySQL中的压缩方案;
SEian.G
2022/01/18
3.6K0
MySQL表压缩和页压缩,难道只是空间压缩?
MySQL详解复杂原理
MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB 的内部实现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。
用户4283147
2022/10/27
3970
MySQL详解复杂原理
表空间
5.6版本之后 ibd frm ibdata1 不能单独的去cp ibd和frm 不能cp达到迁移的目的,只能在同一版本迁移小版本也不能差
萧晚歌
2022/02/14
9480
【我在拉勾训练营学技术】Mysql 架构原理
mysql 数据库作为现在互联网企业首选的数据库,我们程序员就应该对它多一些了解,我在拉勾训练营学到第五阶段啦,了解了mysql 整体架构,记录下来。
程序员爱酸奶
2021/03/21
5940
MySQL-8.0 | 数据字典最强解读
数据字典(Data Dictionary)中存储了诸多数据库的元数据信息如图1所示,包括基本Database, table, index, column, function, trigger, procedure,privilege等;以及与存储引擎相关的元数据,如InnoDB的tablespace, table_id, index_id等。MySQL-8.0在数据字典上进行了诸多优化,本文将对其进行逐一介绍。
数据和云
2019/05/13
4.2K0
MySQL 存储引擎 - InnoDB 实现原理介绍
内存结构主要包括 Buffer Pool、Change Buffer、Adaptive Hash Index和 Log Buffer 四大组件
一个会写诗的程序员
2023/03/08
1.3K1
MySQL 存储引擎 - InnoDB 实现原理介绍
MySQL 存储引擎(2)原
顾名思义,存储引擎就是用于存储我们的数据的。在关系型数据库中我们一般将数据库存放在表中(Table)。
兜兜毛毛
2020/04/23
5910
MYSQL 8 vs MYSQL 5.7 ORACLE 到底怎么想的? (二)
1 在MYSQL 5.7 临时表包含了一个 "converting HEAP to on disk", 意思当临时表达到最大的内存使用的限制(一个表一个)16MB,则系统就要将这个临时表放到磁盘上了,但MYSQL 8.0 将这个默认的临时表的设置变成1GB
AustinDatabases
2019/11/04
3.7K0
MYSQL 8 vs MYSQL 5.7  ORACLE 到底怎么想的? (二)
MySQL InnoDB引擎
表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。
用户9615083
2022/12/25
1.6K0
MySQL InnoDB引擎
MySQL 8.0.19亿级数据如何秒速增加字段?
今天主要介绍一下MySQL 8.0.19 instant add column的新特性,基于亿级数据秒速增加字段,下面一起来看看吧~
IT大咖说
2021/03/14
8.6K0
MySQL内核InnoDB存储引擎详解
MySQL从5.5版本开始将InnoDB作为默认存储引擎,该存储引擎是第一个完整支持事务ACID特性的存储引擎,且支持数据行锁,多版本并发控制(MVCC),外键,以及一致性非锁定读。 作为默认存储引擎,也就意味着默认创建的表都会使用此存储引擎,除非 使用ENGINE=参数指定创建其他存储引擎的表。
星哥玩云
2022/08/17
3.4K0
MySQL内核InnoDB存储引擎详解
MySQL 5.7 新特性之四
本系列文章基于5.7.20 版本讲述MySQL的新特性。从安装,文件结构,SQL ,优化 ,运维层面 复制,GITD等几个方面展开介绍5.7 的新特性和功能。同时也建议大家跟踪官方blog和官方文档,以尽快知悉其新的变化。前面写了一篇文章介绍 innodb 的特性,囿于相关知识点比较多 ,本文继续介绍5.7版本的innodb 新特性。
用户1278550
2018/08/09
7800
MySQL 5.7 新特性之三
本系列文章基于5.7.20 版本讲述MySQL的新特性,从安装,文件结构,SQL,优化,复制等几个方面展开介绍5.7 的新特性和功能,同时也建议大家跟踪官方blog和文档 ,以尽快知悉其新的变化。
用户1278550
2018/08/09
7530
相关推荐
【精华】洞悉MySQL底层架构:游走在缓冲与磁盘之间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档