当前位置:网站首页>Mysql各个大版本之间的区别
Mysql各个大版本之间的区别
2022-08-02 07:29:00 【sebeefe】
一、当前主流的mysql的大版本
当前主流的mysql版本有 5.6、5.7、5.8
二、区别比对
(1)5.6对比5.5
1、可以修改未压缩表的InnoDB
页大小设置为8KB或4KB,默认是16KB。
2、InnoDB
的redo log
文件可存储的最大值从4g升到512g。
3、可以创建全文索引。
4、可以设置innodb
压缩级别 , 级别等级为 0-9。
5、默认用独立的表空间ibd
。
> `create table external (x int unsigned not null primary key)data directory = ‘/volumes/external1/data’;`
6、新增参数innodb_page_size可以设置page大小。
7、整合了memcached API,可以使用API来直接访问innodb表,并非SQL(减少SQL解析、查询优化代价)。
8、Innodb
将flush
刷盘操作从主线程移动到其他线程。
9、Undo Log
可以保存在独立的表空间。
10、最大分区数量增加到8192。
11、支持显示分区选择,如:SELECT * FROM t PARTITION (p0, p1) WHERE c < 5。
12、
Mysql集群,在这个版本作为独立的产品发布,存储引擎不是默认的innodb
,而是NDB。
13、
复制和日志记录,可以从远程服务器读取binlog,
延迟复制。
14、优化器增强,从5.6开始,可以用EXPLAIN
来查看DELETE
,INSERT
,REPLACE
,UPDATE
等DML
操作的执行计划。 在这之前,它只支持SELECT
操作。优化了子查询和主机缓存。
15、统计信息持久化,mysqld重启后不丢失。
(2)5.7对比5.6
1、用户表 mysql.user 的 plugin字段不允许为空, 默认值是 mysql_native_password,而不是 mysql_old_password,不再支持旧密码格式。
2、增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式。
3、提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。
4、MySQL数据库从5.7.8版本开始,也提供了对JSON的支持。
5、可以混合存储结构化数据和非结构化数据,同时拥有关系型数据库和非关系型数据库的优点。
能够提供完整的事务支持。
6、generated column是MySQL 5.7引入的新特性,所谓generated column,就是数据库中这一列由其他列计算而得。
7、在MySQL 5.7 之前,如果用户输入了错误的SQL语句,按下 ctrl+c ,虽然能够”结束”SQL语句的运行,但是,也会退出当前会话,MySQL 5.7对这一违反直觉的地方进行了改进,不再退出会话。
8、MySQL 5.7可以explain一个正在运行的SQL,这对于DBA分析运行时间较长的语句将会非常有用。
9、sys schema是MySQL 5.7.7中引入的一个系统库,包含了一系列视图、函数和存储过程, 该项目专注于MySQL的易用性。例如:如何查看数据库中的冗余索引;如何获取未使用的索引;如何查看使用全表扫描的SQL语句。
10、在线设置 复制的过滤规则不再需要重启MySQL,只需要停止SQLthread,修改完成以后,启动SQLthread。
11、innodb_buffer_pool_size
参数是动态的,允许您在不重启服务器的情况下调整缓冲池的大小。
12、Online DDL MySQL 5.7支持重命名索引和修改varchar的大小,这两项操作在之前的版本中,都需要重建索引或表。
13、在线开启GTID,在之前的版本中,由于不支持在线开启GTID,用户如果希望将低版本的数据库升级到支持GTID的数据库版本,需要先关闭数据库,再以GTID模式启动,所以导致升级起来特别麻烦。
14、支持多线程来刷新缓冲池中的**脏页面,**内存数据页跟磁盘上数据页内容不一致,将内存页称为脏页。
15、InnoDB
支持使用spatial
索引来索引空间数据类型。
16、默认行格式由compact
改为DYNAMIC。
17、允许在某个时间点,有多个触发事件。之前:对于触发器事件(INSERT、UPDATE、DELETE)和操作时间(BEFORE、AFTER)的组合,一个表最多只能有一个触发器,即在某个触发时间点只能有一个触发事件。
18、可将多个服务器的内容备份到一个服务器。
(2)5.8对比5.7
1、新的系统字典表,整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储。
2、安全和用户管理,新增caching_sha2_password认证插件,并且是默认的身份认证插件。性能和安全方面加强权限支持role,新增密码历史记录功能,限制重复使用以前的密码。
3、innodb 增强
a、新增INFORMATION_SCHEMA.INNODB_CACHED_INDEXES,查看每个索引缓存在InnoDB缓冲池中的索引页数。
b、InnoDB临时表都将在共享临时表空间ibtmp1中创建。
c、对于SELECT … FOR SHARE和SELECT … FOR UPDATE语句,InnoDB支持NOWAIT和SKIP LOCKED innodb_undo_tablespaces的最小值为2,并且不再允许将innodb_undo_tablespaces设置为0。最小值2确保回滚段始终在撤消表空间中创建,而不是在系统表空间中创建
支持 ALTER TABLESPACE … RENAME TO 语法。
d、新增INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF视图。
e、新增了动态配置项 innodb_deadlock_detect,用来禁用死锁检查,因为在高并发系统中,当大量线程等待同一个锁时,死锁检查会大大拖慢数据库。
f、支持使用innodb_directories选项在服务器脱机时将表空间文件移动或恢复到新位置。
g、新增innodb_dedicated_server,让InnoDB根据服务器上检测到的内存量自动配置innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method。当innodb_dedicated_server启用时,InnoDB根据服务器上检测到的内存量自动配置以下选项:innodb_dedicated_server:自动配置缓冲池大小;innodb_log_file_size:自动配置的日志文件大小;innodb_flush_method:O_DIRECT_NO_FSYNC。
h、MySQL 8.0更好支持文档型数据库和JSON。
i、不可见索引,开始支持invisible index,在优化SQL的过程中可以设置索引为不可见,优化器不会利用不可见索引。
j、支持降序索引,可以对索引定义 DESC,之前,索引可以被反序扫描,但影响性能,而降序索引就可以高效的完成支持RANK(), LAG()、NTILE()等函数。
k、正则表达式增强,提供了REGEXP_LIKE(),EGEXP_INSTR(), REGEXP_REPLACE(), REGEXP_SUBSTR()等函数。
l、新增备份锁,允许在线备份期间的DML,同时防止可能导致快照不一致的操作。 备份锁由LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语法支持
m、默认字符集由latin1变为utf8mb4。
4、配置文件增强
MySQL 8.0版本支持在线修改全局参数持久化,通过加上PERSIST关键字,可以将调整持久化到新的配置文件中,再次重启db还可以应用到最新的参数。对于加上 PERSIST 关键字修改参数命令,MySQL系统会生成一个包含json格式数据的 mysqld-auto.cnf 文件,比如执行:
set PERSIST binlog_expire_logs_seconds = 604800 ; #内存和json文件都修改,重启还生效
set GLOBAL binlog_expire_logs_seconds = 604800 ; #只修改内存,重启丢失
系统会在数据目录下生成一个包含如下内容的 mysqld-auto.cnf 的文件:
{ “mysql_server”: {" binlog_expire_logs_seconds ": “604800” } }
当 my.cnf 和 mysqld-auto.cnf 同时存在时,后者具有高优先级。
5、InnoDB性能提升
废除buffer pool mutex, 将原来一个mutex拆分成多个,提高并发拆分LOCK_thd_list 和 LOCK_thd_remove 这两个mutex,大约可提高线程链接效率5%。
6、行缓存
MySQL8.0的优化器可以估算将要读取的行数,因此可以提供给存储引擎一个合适大小的row buffer来存储需要的数据。大批量的连续数据扫描的性能将受益于更大的record buffer。
7、改进扫描性能
改进InnoDB范围查询的性能,可提升全表查询和范围查询 5-20%的性能。
8、优化器增强,支持隐藏索引。
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- 关于DDoS的几个误区
- Metasploit (MSF) Basic Super Detailed Edition
- 7.联合索引(最左前缀原则)
- 59: Chapter 5: Develop admin management services: 12: MongoDB usage scenarios; (non-core data, non-core data with a relatively large amount of data, small private files such as face photos;)
- MySQL优化之慢日志查询
- postgres groupby merge strings
- 多表的查询
- 有点奇怪!访问目的网址,主机能容器却不行
- 停止精神内耗 每日分享
- MySQL-锁机制
猜你喜欢
多版本node的安装与切换详细操作
ROS file system and related commands
多表的查询
研发创新编码器霍尔板,引领企业高质量发展
Mysql error 2003 solution Can 't connect to Mysql server on' localhost '(10061).
pnpm install出现:ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies
5分钟搞懂MySQL - 行转列
7.联合索引(最左前缀原则)
替换ptmalloc,使用tcmalloc和jemalloc
FormData upload binary file, object, object array
随机推荐
MGRE综合实验
HCIP第三天
Data Middle Office: Started in Ali, Prosperous in DaaS
Understand the Chisel language. 30. Chisel advanced communication state machine (2) - FSMD: Take Popcount as an example
MySQL-多版本并发控制
MySQL - index explanation
OC-error prompt
From cloud computing to function computing
typescript学习
(2022 Niu Ke Duo School 5) D-Birds in the tree (tree DP)
I.MX6U-ALPHA开发板(EPIT定时器实验)
MySQL - Detailed Explanation of Database Transactions
CollectionUtil: a collection of functional style tool
MySQL-Execution Process + Cache + Storage Engine
MySQL之创建表的基本操作
MySQL-底层设置
FormData upload binary file, object, object array
Inverter insulation detection detection function and software implementation
sql创建表格 如图 运行完提示invalid table name 是什么原因
设置工作模式与环境(中):建造二级引导器