mysqlrelease_新特性解读MySQL最新的releasenotes
原创作者:爱可⽣开源社区
从MySQL发布正式版本8.0.11以来,MySQL⼜相继发布8.0.12-8.0.15四个版本,本⽂着重介绍MySQL 8.0.13和8.0.14 版本中值得关注的改进点。
为什么不关注8.0.15,因为8.0.15的release notes 基本没啥信息。
MySQL 8.0.13
部分改进和特性
1.提⾼SELECT COUNT(*) FROM tbl_name 语句的查询速度,注意只针对没有where条件的SQL或者没有其他group by的查询语句。例如 select count(*) from t where a=x 则不能优化。
2.⽀持Skip Scan access有点像跳跃索引扫描,看官⽅的例⼦:
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL,
游戏小程序开发
PRIMARY KEY(f1, f2));
INSERT INTO t1 VALUES (1,1), (1,2), (1,3), (1,4), (1,5),
(2,1), (2,2), (2,3), (2,4), (2,5);
INSERT INTO t1 SELECT f1, f2 + 5 FROM t1;
INSERT INTO t1 SELECT f1, f2 + 10 FROM t1;
INSERT INTO t1 SELECT f1, f2 + 20 FROM t1;
INSERT INTO t1 SELECT f1, f2 + 40 FROM t1;
ANALYZE TABLE t1;
EXPLAIN SELECT f1, f2 FROM t1 WHERE f2 > 40;
新的算法的执⾏伪算法如下:
优化器能使⽤Skip Scan access必须满⾜:
1 select的字段必须都在组合索引中,也即满⾜覆盖索引的条件。
2 索引最左前缀不在where条件中。(a,b,c,d) a 不在where 条件中,但是b c必须在。
3 查询只能涉及到⼀个单表。
1到5的随机数4 查询sql不能使⽤group by 或者distinct
5 where 条件中必须有⾮最左前缀必须有范围查询,⽐如索引是(a,b,c) where b>20 .
个⼈感觉这个特性颠覆了DBA经常告诉开发的最左前缀原则,是对不合适索引设计的补充。尽管MySQL优化器越来越强⼤,但是开发创建索引时还是要尽可能的满⾜最左前缀原则,也可以参考 ⼲货 | 解读MySQL 8.0新特性:Skip Scan Range。
3. 还有其他是数据⽂件加密和MRG相关改进,有兴趣的可以⾃⼰去看看。
以后要废弃且在未来的版本中移除的参数和特性以后不在⽀持存放分区表在共享表空间。
CREATE TEMPORARY TABLE 的语法以后废弃 TABLESPACE = innodb_file_per_table and TABLESPACE = innodb_temporary 的属性。
废弃utf8mb3字符集,请使⽤utf8mb4代替。话说应该很少⼈⽤utf8mb3字符集吧。
移除 metadata_locks_cache_size 和metadata_locks_hash_instances。
废弃sql_mode:PAD_CHAR_TO_FULL_LENGTH,并且在未来的版本中移除。
MySQL 8.0.14 部分改进和特性增强系统可运维性,增加管理员连接地址,在MySQL系统连接满的情况下,管理员可以通过
admin_address登录数据库进⾏维护操作。其实这个类似管理端⼝的功能。
⽀持账号设置双密码,修改底层密码时系统可以更平滑,提供系统安全性和稳定性。例如:
ALTER USER 'appuser1'@'ample' IDENTIFIED BY 'password_b' RETAIN CURRENT PASSWORD;
mysql是什么系统之前的8.0版本是系统默认创建2个undo表空间,新版本⽀持创建额外的undo表空间并且可以在运⾏时删除额外的undo表空间。
CREATE UNDO TABLESPACE tablespace_name ADD DATAFILE 'file_name.ibu'; DROP UNDO TABLESPACE
tablespace_name;
还可以通过alter命令动态的设置undo 表空间的ACTIVE|INACTIVE状态。
⽀持并发聚族索引读取,提⾼check table的速度。其并发数量由innodb_parallel_read_threads 控制,默认是4,需要注意的是该功能不⽀持辅助索引。
当innodb_dedicated_server为开启时,log file的数量和⼤⼩可以根据系统的buffer pool size ⾃动调整。之前的版本是根据os系统的内存⼤⼩设置的,⽽且log file的数量不是⾃动调整的。注意: 如果不是独享物理机,官⽅⽂档并不推荐打开该参数,具体可以参考官⽅⽂档。
alter table命令⽀持in-place的⽅式修改字符集了,不过需要满⾜如下三个条件:
jdk下载安装
a. 字符集类型是char,varchar,text或者enum
网站seo整站优化
b. 字符集类型从utf8mb3 修改为utf8mb4,或者由任意字符集修改为binary
c. 被修改的字段⾮索引字段
MRG新增参数 group_replication_consistency 控制集数据⼀致性,防⽌集容灾切换时,新的主库没有应⽤完backlog,业务请求访问新的主库可能会读取⽼的数据。该参数有EVENTUAL,BEFORE_ON_PRIMARY_FAILOVER,BEFORE,AFTER,BEFORE_AND_AFTER 四个值。
默认为EVENTUAL,可以不等⽇志应⽤完成即可读写。如果设置为 BEFORE_ON_PRIMARY_FAILOVER 则新的读写请求会被阻塞住,直到⽇志被应⽤完成,详细信息参考 社区投稿 | MySQL MGR"⼀致性读写"特性解读。weight的动词是什么
参考⽂档

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。