- GreatSQL社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
- GreatSQL是MySQL的国产分支版本,应用上与MySQL统一。
- 作者: 叶金荣
- 文章起源:GreatSQL社区原创
MySQL 8.0版本打算
MySQL 8.0开始采纳疾速迭代开发模式,基本上是每隔3个月就公布一个新的小版本。去年1月18日(2022.1.18)公布MySQL 8.0.28,往年1月17日公布MySQL 8.0.32,再看看其余几个版本的工夫,还真是贼守时啊。
版本 | 公布工夫 | 上一年版本 | 上一年公布工夫 |
---|---|---|---|
8.0.32 | 2023.1.17 | 8.0.28 | 2022.1.18 |
8.0.31 | 2022.10.11 | 8.0.27 | 2021.10.10 |
8.0.30 | 2022.7.26 | 8.0.26 | 2021.7.20 |
8.0.29 | 2022.4.26 | 8.0.25 8.0.24 | 2021.5.11 2022.4.20 |
在这两头,出了点小意外,MySQL 8.0.29因为存在重大平安问题,刚上架没多久就被下架了,能够看下这篇文章的解读:MySQL8.0.29呈现重大bug,现已下架。
MySQL 8.0.32的一些变动
总的来说,8.0.32版本基本上属于修修补补状态,乏善可陈。
在这里,次要列举我集体认为须要关注的几个要点或bug fix,想看具体变动的能够查看 MySQL 8.0.32 Release Notes, https://dev.mysql.com/doc/rel...。
- 当数据表名用 "$" 结尾的话,援用时必须用反引号 "`",否则会有一个WARN,例如:
mysql> create table $t1(id int primary key);Query OK, 0 rows affected, 1 warning (0.02 sec)mysql> show warnings;+---------+------+-------------------------------------------------------------------------------------------------------------+| Level | Code | Message |+---------+------+-------------------------------------------------------------------------------------------------------------+| Warning | 1681 | '$ as the first character of an unquoted identifier' is deprecated and will be removed in a future release. |+---------+------+-------------------------------------------------------------------------------------------------------------+mysql> table $t1;+----+| id |+----+| 1 || 2 |+----+2 rows in set, 1 warning (0.00 sec)mysql> show warnings;+---------+------+-------------------------------------------------------------------------------------------------------------+| Level | Code | Message |+---------+------+-------------------------------------------------------------------------------------------------------------+| Warning | 1681 | '$ as the first character of an unquoted identifier' is deprecated and will be removed in a future release. |+---------+------+-------------------------------------------------------------------------------------------------------------+mysql> table `$t1`; -- 加上反引号 "`" 就不再报告WARN+----+| id |+----+| 1 || 2 |+----+2 rows in set (0.00 sec)
- 局部客户端程序采纳新的压缩参数(--compression-algorithms=zstd|zlib|uncompressed)替换旧参数(--compress),新参数中能够指定不同压缩算法或不压缩。影响的客户端程序有:mysqlpump, mysqlcheck, mysql, mysqladmin, mysqlbinlog, mysqldump, mysqlimport, mysqlshow, mysqlslap, mysql_upgrade, mysqltest,而企业版备份工具mysqlbackup临时不受影响,还采纳 --compress 参数。例如:
$ /usr/local/mysql-8.0.32-linux-glibc2.17-x86_64-minimal/bin/mysqldump --set-gtid-purged=OFF -S./mysql.sock --compress test > test.sqlWARNING: --compress is deprecated and will be removed in a future version. Use --compression-algorithms instead.$ /usr/local/mysql-8.0.32-linux-glibc2.17-x86_64-minimal/bin/mysql --compress -S./mysql.sockWARNING: --compress is deprecated and will be removed in a future version. Use --compression-algorithms instead.
- 新增选项
explain_format
用于设置 EXPLAIN 查看执行打算时的默认输入格局,反对 JSON, TREE, TRADITIONAL(或者写成 DEFAULT 也能够);当设置为 JSON 格局时,执行EXPLAIN ANALYZE
则会报错:
mysql> set @@explain_format = json;Query OK, 0 rows affected (0.00 sec)mysql> explain analyze select * from t1;ERROR 1235 (42000): This version of MySQL doesn't yet support 'EXPLAIN ANALYZE with JSON format'
原来的 EXPLAIN FORMAT=?
语法依然反对,但不反对设置为 DEFAULT,只能写成 TRADITIONAL:
mysql> explain format=tree select * from t1;...mysql> explain format=json select * from t1;...mysql> explain format=traditional select * from t1;...mysql> explain format=default select * from t1;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'default select * from t1' at line 1
- 在MGR中设置
group_replication_consistency = AFTER
,当某个Secondary节点因为网络不稳固时,可能会触发报错Transaction 'GTID' does not exist on Group Replication consistency manager while receiving remote transaction prepare.
。这是因为事务event在View_change_log_event
后写入导致。在8.0.32中,修复了这个问题,将事务event先于View_change_log_event
写入,就能够防止该问题。不过要再次强调,MGR中强烈建议不要设置为 AFTER模式,具体能够参考这篇文章:为什么MGR一致性模式不举荐AFTER。
- 当从MySQL 5.7降级到8.0时,如果某个库中有大量的表,内存可能会耗费过多内存。这是因为在降级时,一次性读取所有表并执行
CHECK TABLE .. FOR UPGRADE
。在8.0.32中,调整为一一表查看是否可降级,就能够防止这个问题了。
有些bug fix的形容信息比拟少,或者指向外部bug id无奈看到细节,这里就不再列举了。
延长浏览
- MySQL 8.0.32 GA
- Changes in MySQL 8.0.32
- Server System Variables - explain_format
- EXPLAIN Statement
Enjoy GreatSQL :)
## 对于 GreatSQL
GreatSQL是由万里数据库保护的MySQL分支,专一于晋升MGR可靠性及性能,反对InnoDB并行查问个性,是实用于金融级利用的MySQL分支版本。
相干链接: GreatSQL社区 Gitee GitHub Bilibili
GreatSQL社区:
社区博客有奖征稿详情:https://greatsql.cn/thread-10...
技术交换群:
微信:扫码增加GreatSQL社区助手
微信好友,发送验证信息加群
。