首页 > 代码库 > MySQL 5.7 GA 新特性

MySQL 5.7 GA 新特性

 

转载自: 

http://www.chinaxing.org/articles/Database/2015/10/23/2015-10-22-mysql-5.7.html

 

Percona的一个测试,在MySQL5.7的情况下将innodb_page_size调整到4k,可以比16k性能提升70%以上;https://www.percona.com/blog/2016/08/10/small-innodb_page_size-performance-boost-ssd/

 

 

 

MySQL 5.7 GA 新特性

Table of Content
  • 性能
  • 易操作性
  • SQL优化器提升
  • InnoDB 增强
  • Performace Schema
  • Buffer Pool Dump/ Load
  • Replication
  • Reference

MySQL 5.7 算是放大招了,易用性,性能,可用性,安全等都有很大的改善。

性能

性能提升3倍以上。包括:

  • 临时表性能
  • 大块数据导入时索引构建更快
  • innodb的读写性能提升
  • innodb的并行刷盘 O(n^2) -> O(n),以前是单线程,这样可以利用多核
  • 连接处理能力提升 Improving connect/disconnect performance

易操作性

  • GTID 在线设置Enabling Global Transaction Identifiers Without Downtime in MySQL 5.7.6
  • 在线修改 innodb_buffer_pool_size Resizing the InnoDB Buffer Pool Online
  • 自动Truncate UNDO 日志,避免undo 日志太大
  • 在线重命名索引
  • 在线扩大 VARCHAR 类型列的长度
  • 在线修改复制过滤器 CHANGE REPLICATION FILTER Making MySQL Slave Replication Filter Dynamic
  • 在线更改Slave的Master,无需停止复制 CHANGE MASTER Change Master without stopping slave altogether

SQL优化器提升

  • Parser重写 SQL parser refactoring
  • 层次化的SQL优化器
  • 增加GIS实现
  • Query Rewrite插件框架,用户可以编写自己的Query Rewrite插件 Write Yourself a Query Rewrite Plugin ; https://yq.aliyun.com/articles/53686
  • subquery的处理归一化:view和from语句2种方式中得subquery都使用统一的处理方式
  • 通过使用区间扫描的方式执行行表达式的方法提升”IN queries” 的性能 Range access: now in an INpredicate near you
  • UNION ALL” 不再创建临时表,减少磁盘空间和磁盘IO的操作。 State of the UNION
  • 压缩排序缓存中得未排序的字段,更加高效的使用排序缓存,减少磁盘IO
  • 可以执行 EXPLAIN FOR CONNECTION 来查看执行中Query得情况,起到运行时profile的作用。
  • JSON EXPLAIN 增加query开销的输出,处理的数据集数等信息,便于用户进行执行计划的决策比较 MySQL EXPLAIN explained
  • 优化器的暗示器语法增加,可以直接跟在SELECT等关键字之后,/*+ */ 的形式的注释
  • 增加了索引层面的暗示器
  • 增加控制子查询执行策略的暗示器
  • 优化器新的开销评估模型 MySQL Optimizer Cost Model Project

InnoDB 增强

  • Page Compression 增加透明页面压缩,对于在支持稀疏文件的系统上,压缩页面的内容,并利用稀疏文件系统的特点只保存压缩后内容,节约磁盘空间的使用。

Performace Schema

监控系统性能能的Schema得以重新设计架构,包括Metadata Locking、Transactions、Memory Usage、Stored Programs、Prepared Statements,MySQL Performace Schema

Buffer Pool Dump/ Load

提升bufferPool的dump和load,支持只dump每个BufferPool最热的百分之N(默认25%)的页面,load在后台运行,不影响用户的查询执行 MySQL Dumping and Reloading the InnoDB Buffer Pool

Replication

  • Mutli-Source Replication MySQL Multi-source Replication 允许同一个slave配置多个Master
  • Multi-Threaded Slaves Configuring slave for intra-database parallelization 支持Slave SQL执行线程并发应用binlog事件到同一个database和schema(只要没有交集),之前的版本是只支持多个库的并发应用。
  • Semi-Sync Master可等待N个slave确认binlog日志收到,之前是仅仅等待1个,这样的好处是增加了持久化的可靠性 Lossless Semi-Synchronous Replication on MySQL 5.7.2
  • GTID 方式的复制客户端自动感知GTID,保证GTID_EXECUTED和GTID_PURGED不会丢失 Enabling Global Transaction Identifiers Without Downtime in MySQL 5.7.6
  • No-Blocking SHOW SLAVE STATUS
  • mysqlbinlog 支持Rewrite-DB 可以根据指示改写RowEVENT中的DB
  • 增加更多的复制相关的状态变量到Performance Schema Table
  • Binlogging XA-prepared transactions 在复制中全面支持XA事务

Reference

What’s New in MySQL 5.7 GA

 

MySQL 5.7 GA 新特性