mysql5.6与5.7差别_Mysql5.5&Mysql5.6&Mysql5.7区别

本文对比了MySQL5.5、5.6和5.7的特性,重点介绍了5.6和5.7相对于5.5的改进,包括InnoDB性能提升、并发处理能力增强、优化器优化、安全性提升、灵活性增强、易用性改进以及性能的显著提高。如5.6中的InnoDB表空间在线迁移和5.7的在线DDL、JSON支持、只读事务性能优化等。
摘要由CSDN通过智能技术生成

Mysql5.5 特性,相对于Mysql5.1

性能提高mysql

默认InnoDB plugin引擎。具备提交、回滚和crash恢复功能、ACID兼容。算法

行级锁(一致性的非锁定读 MVCC)。sql

表与索引存储在表空间、表大小无限制。数据库

支持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 日志文件中;新用户登入后须要马上修改密码,不然没法继续后续的工做。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值