https://v.qq.com/x/page/c051874ev0l.html

MySQL5.7新气象

2013.4.23发布了MySQL5.7.1,距今已有4年了。它最主要的几个特性,一是性能上提升、InnoDB方面的性能提升,还有复制极大增强,以及查询优化器开始支持基于代价的规则。

并原生支持JSON。

Performance_Schema增加了众多信息。

新增sys schema,管理更方便了。

安全性提升。

GIS增强。


性能增强

知数堂联合创始人叶金荣:MySQL 5.7新时代_java

知数堂联合创始人叶金荣:MySQL 5.7新时代_java_02

这是5.7和5.5和5.6的性能对比,可以看到5.7的性能强悍多了,尤其是在高并发场景下。


优化器增强

5.7版本在查询过程中可以增加很多关键字,避开某些执行计划方面的坑。


InnoDB引擎

最瞩目的无疑是可以在线修改InnoDB Buffer Pool,由小改大几乎没有影响,由大改小只需要释放部分内存,影响也不大,可做到秒级完成。

InnoDB Buffer dump and load增强。

Temporary table增强。5.7版本InnoDB的临时表可以单独放在自己的临时表空间里,此外临时表不会再记录redo。

Online DDL增强,在线增加VARCHAR列长度。在不跨越255字节长度的前提下,可以把字节数直接进行在线调整。增加VARCHAR长度几乎无额外代价。

InnoDB Monitor取消innodb_xx_monitor机制,改成另外两个选项控制。

知数堂联合创始人叶金荣:MySQL 5.7新时代_java_03

支持更多page_cleaner线程提升purge效率。

表空间文件迁移增强,增加对分区表空间文件支持。

自动检测设备是否支持原子写,确认后关闭double writebuffer。

索引更新效率提升3倍以上。

InnoDB表分区性能提升,尤其是在有大量分区情况,且内存消耗更少。

支持spatial indexes,检索更精确。

透明data page压缩,压缩比变化不大,但读取效率高多了。(尤其是在慢速I/O设备上)

MySQL复制

真正实现多线程并发复制。

多源复制。把多个主服务器上的数据复制到从服务器上,这样的好处就是可以做到数据汇总,在数据分析业务场景中非常实用,也可以提高服务器资源利用率。

复制性能提升。减少master上的dump thread并发锁,提高并发率。

半同步复制更可靠更灵活。接收、发送信号线程分离(串行变并行),提高复制效率。

组复制类似PXC架构,可以实现多节点同时写入,同时提供读写均衡。

知数堂联合创始人叶金荣:MySQL 5.7新时代_java_04

复制管理更方便。无需完全停止所有SLAVE线程即可在线执行CHANGE MASTER TO。可在线修改REPLICATION FILTER规则。执行SHOW SLAVE STATUS无锁,不再被阻塞。

Mysqlbinlog解析binlog同时支持rewrite规则。

PERFORMANCE_SCHEMA

知数堂联合创始人叶金荣:MySQL 5.7新时代_java_05

内存统计视图有助于更快理解内存分配情况,以及找到内存泄露原因。

通过事务相关图,可以看到事务延迟,事务隔离级别,是否自动提交以及GTID信息。

MySQL复制相关图可以看到复制相关信息,可以取代SHOW SLAVE STATUS。

SYS Schema

从SYS Schema可以快速获取锁等待、内存分配和SQL统计。

查看I/O读写最多的文件。

查看热门SQL top10。

安全性

数据库安全增强。

初始化时采用随机密码。

只创建root@localhost账号,再也没有匿名账号。

不创建test库。

设置密码有效期,过期不予连接。

密码过期或首次登录需要设置新密码。


今天的分享到此结束,谢谢大家!