打开网易新闻 查看更多图片

破产码农

IT圈最会讲故事的网红 · 南山彭于晏

MySQL 8.0的最新版本8.0.22已发布。姜老师也多次强调,现在是升级8.0版本的好时机了。

一方面,8.0这个版本经过多次迭代已经比较成熟,另一方面,8.0拥有了很多实用的企业级特性。

今天让姜老师带大家来看看8.0.22版本中,最激动人心的Top 5功能。

SHOW PROCESSLIST优化

8.0.22版本对命令SHOW PROCESS LIST进行了优化。

原来的实现机制会去遍历所有线程,这时需要持有一把全局大锁。

当生产环境的线程非常多时,这可能会产生性能波动,影响业务的耗时上升。

8.0.22新增了一种实现,即SHOW PROCESSLIST直接从PERFORMANCE_SCHEMA库中去读取,这样就避免了锁的持有,从而提升了系统的稳定性。

官方Worklog:https://dev.mysql.com/worklog/task/?id=9090

BTW,对于MySQL 5.7,SHOW PROCESSSLIT怎么优化呢?

只读库功能(Read Only Schema)

之前版本的MySQL仅支持实例级别设置为只读。

而8.0.22版本新增了设置指定库为只读。这样方便分布式架构下的数据迁移工作。

ALTER {DATABASE | SCHEMA} [db_name]READ ONLY [=] {DEFAULT | 0 | 1}

官方Worklog:https://dev.mysql.com/worklog/task/?id=13369

新增Error Log表

MySQL错误日志Error Log是用于分析数据库实例状态的重要文件。

之前查询错误日志文件需要登录到服务器,对于大规模运维来说,安全性和效率都较为一般。

8.0.22在performance_schema库下,新增了一张表errorlog,用户未来可直接查询此表即可。

mysql> SELECT * FROM performance_schema.error_log\G*************************** 1. row ***************************LOGGED: 2020-08-06 09:25:00.338624THREAD_ID: 0PRIO: SystemERROR_CODE: MY-010116SUBSYSTEM: ServerDATA: mysqld (mysqld 8.0.23) starting as process 96344*************************** 2. row ***************************LOGGED: 2020-08-06 09:25:00.363521THREAD_ID: 1PRIO: SystemERROR_CODE: MY-013576SUBSYSTEM: InnoDBDATA: InnoDB initialization has started....

官方Worklog:https://dev.mysql.com/worklog/task/?id=13681

异步复制自动FAILOVER新节点

8.0.22版本新增了异步复制的自动FAILOVER机制,即当复制源节点当即是,异步节点可以自动地从另一个复制源进行复制。

这是一个在生产环境中比较实用的功能,如果能mysqlbinlog远程拉二进制日志也能实现类似机制就更好了。这样在做增量备份时,就更为简单。

CHANGE MASTER TO ...SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}

官方Worklog:https://dev.mysql.com/worklog/task/?id=12649

MySQL Router连接性能提升

作为一款中间件产品,即便定位是轻量级,MySQL Router刚开始的连接性能真值得吐槽。姜老师甚至觉得是实习生开发的产品。

例如之前用SELECT机制,连接被限制为最多1024。

后面的版本更新为了POLL机制,连接数上限可以设置为5000。

8.0.22版本进一步优化,使用非阻塞的EPOLL异步机制,连接数上限可达5K,甚至更高。

即MySQL Router这款中间件产品本身解决了10K问题。

官方Worklog:https://dev.mysql.com/worklog/task/?id=10703

MySQL 8.0.22版本中,你最最兴奋的特性是什么呢?赶紧留言评论吧。

-----------------------

公众号:破产码农(ID:manongBR)

B站:Jiang老师

微博:破产码农

知乎:破产码农