前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL 8 VS MYSQL 5.7 到底ORACLE是怎么想的?(一)

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

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

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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档