Mysql5.5Mysql5.6Mysql5.7区别
Mysql5.5 特性,相对于Mysql5.1
性能提升
默认InnoDB plugin引擎。具有提交、回滚和crash恢复功能、ACID兼容。
行级锁(一致性的非锁定读 MVCC)。
表与索引存储在表空间、表大小无限制。
支持dynamic(primary key缓存内存 避免主键查询引起的IO )与compressed(支持数据及索引压缩)行格式。
InnoDB plugin文件格式Barracuda、支持表压缩、节约存储、提供内存命中率、truncate table速度更快。
原InnoDB只有一个UndoSegment,最多支持1023的并发;现在有128个Segments,支持128K个并发(同样,解决高并发带来的事务回滚)。
Innodb_thread_concurrency默认为0,线程并发数无限制,可根据具体应用设置最佳值。
Innodb_io_capacity可以动态调整刷新脏页的数量,改善大批量更新时刷新脏页跟不上导致的性能下降问题。Default:200,跟硬盘的IOPS有关。
充分利用CPU多核处理能力innodb_read_io_threads阈值:1-64innodb_write_io_threads 阈值:1-64根据数据库的读写比灵活设置,充分发挥多CPU、高性能存储设备的性能,不支持动态加载 。
自适应刷新脏页
热数据存活更久
buffer pool多实例 :innodb_buffer_pool_instances 参数增加innodb_buffer_pool实例个数,大大降低buffer pool的mutex争抢过热情况。
Linux上实现异步IO
重新支持组提交
稳定性提升
支持半同步Replication。
增加Relay Log 自我修复功能。
Crash recovery。
引入红-黑树做插入排序的中间数据结构,时间复杂度大大降低,减少恢复时间。
Thread Pool 分组排队 限流
Mysql5.6 特性,相比5.5
默认参数的改变
Back_log 排队队列
支持全文索引
支持online DDL create,alter,drop
可以在建表时指定表空间位置
create table external (x int unsigned not null primary key)data directory = '/volumes/external1/data';
新增参数innodb_page_size可以设置page大小
整合了memcached API,可以使用API来直接访问innodb表,并非SQL(减少SQL解析、查询优化代价)
innodb只读事务,不需要设置TRX_ID字段,
减少内部数据结构开销,减少read view
仅仅非只读事务依然需要TRX_ID
innodb改进点
innodb表空间在线迁移(TransportableTablespaces)
undo log可独立出系统表空间
redo log最大可增长到512G
innodb后台线程独立出来
优化器改进
ICP
可以在引擎层直接过滤数据,避免二次回表
节省BP空间,提高查询性能
BKA
全称Batch Key Access:
SQL通过辅助索引要访问表数据时候,将大量的随机访问放入缓存,交给MRR接口合并为顺序访问。
MRR
全称Multi Range Read:
在BKA算法应用之后,通过MRR接口合并随机访问为顺序访问,再去检索表数据。
变大量随机为顺序访问。在通过辅助索引检索大量数据时,性能提升明显
磁头无需来回寻道,page只需读取一次,且较好利用了innodb线性预读功能(每次预读64个连续page)。
统计信息持久化,mysqld重启后不丢失
explain语句支持insert,update,delete,replace语句,并且支持JSON格式
子查询优化提升。
Mysql5.7 特性,相比5.5 5.6
安全性
用户表 mysql.user 的 plugin字段不允许为空, 默认值是 mysql_native_password,而不是 mysql_old_password,不再支持旧密码格式;
增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式;
增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式;
提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。
灵活性
MySQL数据库从5.7.8版本开始,也提供了对JSON的支持。
可以混合存储结构化数据和非结构化数据,同时拥有关系型数据库和非关系型数据库的优点
能够提供完整的事务支持
generated column是MySQL 5.7引入的新特性,所谓generated column,就是数据库中这一列由其他列计算而得
易用性
在MySQL 5.7 之前,如果用户输入了错误的SQL语句,按下 ctrl+c ,虽然能够”结束”SQL语句的运行,但是,也会退出当前会话,MySQL 5.7对这一违反直觉的地方进行了改进,不再退出会话。
MySQL 5.7可以explain一个正在运行的SQL,这对于DBA分析运行时间较长的语句将会非常有用。
sys schema是MySQL 5.7.7中引入的一个系统库,包含了一系列视图、函数和存储过程, 该项目专注于MySQL的易用性。
例如:如何查看数据库中的冗余索引;如何获取未使用的索引;如何查看使用全表扫描的SQL语句。
可用性
在线设置 复制的过滤规则 不再需要重启MySQL,只需要停止SQLthread,修改完成以后,启动SQLthread。
在线修改buffer pool的大小。
Online DDL MySQL 5.7支持重命名索引和修改varchar的大小,这两项操作在之前的版本中,都需要重建索引或表。
在线开启GTID ,在之前的版本中,由于不支持在线开启GTID,用户如果希望将低版本的数据库升级到支持GTID的数据库版本,需要先关闭数据库,再以GTID模式启动,所以导致升级起来特别麻烦。
性能
临时表的性能改进。
临时表只在当前会话中可见
临时表的生命周期是当前连接(MySQL宕机或重启,则当前连接结束)
只读事务性能改进。
MySQL 5.7通过 避免为只读事务分配事务ID ,不为只读事务分配回滚段,减少锁竞争等多种方式,优化了只读事务的开销,提高了数据库的整体性能。
加速连接处理。
在MySQL 5.7之前,变量的初始化操作(THD、VIO)都是在连接接收线程里面完成的,现在将这些工作下发给工作线程,以减少连接接收线程的工作量,提高连接的处理速度。这个优化对那些频繁建立短连接的应用,将会非常有用。
复制性能的改进 (支持多线程复制(Multi-Threaded Slaves, 简称MTS)
MySQL的默认配置是库级别的并行复制,为了充分发挥MySQL 5.7的并行复制的功能,我们需要将slave-parallel-type配置成LOGICAL_CLOCK。
支持多源复制(Multi-source replication)
严格性改变
默认启用 STRICT_TRANS_TABLES 模式。
对 ONLY_FULL_GROUP_BY 模式实现了更复杂的特性支持,并且也被默认启用。
其他被默认启用的sql mode还有 NO_ENGINE_SUBSTITUTION。
默认参数的改变
默认binlog格式调整为ROW格式
默认binlog错误后的操作调整为ABORT_SERVER
在先前的选项下(binlog_error_action=IGNORE_ERROR),如果一个错误发生,导致无法写入binlog,mysql-server会在错误日志中记录错误并强制关闭binlog功能。这会使mysql-server在不记录binlog的模式下继续运行,导致从库无法继续获取到主库的binlog。
默认开启mysql崩溃时的binlog安全。
默认调低slave_net_timeout。
安装不同
mysql_install_db已经不再推荐使用了,建议改成mysqld --initialize 完成实例初始化。如果 datadir 指向的目标目录下已经有数据文件,则会有[ERROR] Aborting;
在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中;新用户登入后需要立刻修改密码,否则无法继续后续的工作。
Mysql5.5Mysql5.6Mysql5.7区别相关推荐
- php使用mysql5和8的区别_mysql8.0和mysql5.7的区别是什么?
区别:mysql8.0的索引可以被隐藏和显示,当一个索引隐藏时,他不会被查询优化器所使用:2.mysql8.0新增了"SET PERSIST"命令:3.从mysql8.0开始,数据 ...
- mysql5.1 与mysql5.5 字符集设置区别
在mysql5.1版本中设置字符集 [mysqld] default-character-set=utf8 在mysql-5.5中设置字符集 [mysqld] character_set_server ...
- linux 命令mysql5.6,linux下mysql5.5mysql5.6的tar包安装
提前yum安装依赖包 yum -y install perl perl-devel libaio* 'perl(Data::Dumper)' 准备好mysql的tar包 1.在/usr/local下解 ...
- mysql5.7 innodb myisam 区别_InnoDB与MyISAM的区别(高性能MySQL笔记)
1.InnoDB支持事务,MyISAM不支持,也就是说MyISAM不支持事务回滚操作,这个功能可能是致命的 2.InnoDB支持行锁,MyISAM只支持表锁,不过InnoDB的行锁是建立在索引之上的, ...
- mysql5.5 5.7区别_mysql 5.5 和5.7 安装的区别
mysql 5.5 的安装步骤: 1 软件安装 [root@dg2 ~]# rpm -ivh MySQL-server-advanced-5.5.54-1.el6.x86_64.rpm warning ...
- mysql5.5 和mysql8区别
1.一个巨大坑 delete from table 别名 where 1=2 别名 a.id 在5.5中别名是不被识别的 但是在mysql8中 你就可以操作成功 ,如果你接续使用5 ...
- 博客英语作文写作技巧_网络写作技巧
网络写作是一项技能,就像其他技能一样,只有通过实践才能完善. 我已经在此博客上写了两年了,在此之前为其他站点创建内容,我想我对此还可以,尽管总有方法可以改进! 在本文中,我将分享我多年来获得的一些智慧 ...
- mysql5.1编译安装centos7_02: mysql 5.7 编译安装 (centos7)
一.MySQL5.6与MySQL5.7安装的区别 1.cmake的时候加入了bostorg 2.初始化时 使用mysqld --initialize 替代mysql_install_db,其它参数没有 ...
- 第三章·MySQL版本区别及管理
一.MySQL5.6与MySQL5.7安装的区别 二.MySQL用户权限管理 三.MySQL连接管理 四.MySQL启动关闭流程 五.MySQL实例初始化配置 六.MySQL多实例配置 一.MySQL ...
最新文章
- Spring Boot 五种热部署方式,极速开发就是生产力!
- WCF服务的REST / SOAP端点
- [LeetCode] Wildcard Matching 题解
- DeepLab v2
- C实现的一个简单的学生成绩管理系统
- GCC Inline ASM GCC内联汇编
- vue获取input的属性_vuejs 中如何优雅的获取 Input 值
- ip模拟工具_HTTP代理和IP代理有什么区别
- 反汇编基础-数组和指针的反汇编代码分析
- 使用adduser命令在Debian Linux中创建用户
- linux编译多个函数,Swift on Linux —— 多文件协同编译
- 第三方支付处理厂商软件有漏洞,日本美容零售商Acro 10万支付卡信息遭攻击
- 关于WordCount的作业
- 混合颜料-python实现
- [CMU 15-445] 17 两阶段封锁协议
- Netty4实战第六章:ChannelHandler
- 除了《千与千寻》,宫崎骏漫画的花卉治愈了观众,而花艺学院治愈了你一片温情
- 云计算与大数据技术 李春燕
- 黑马程序员都到兄弟连兄弟会报名去了
- 学业水平考试b能上985吗_哪些大学对会考等级有要求