MySQL8.0版本新特性

MySQL8.0版本新特性

具体特性可以看官方文档 1.3 MySQL 8.0 中的新功能 (oracle.com)

1.默认字符由latin1变成utf8mb4

2.MyISAM系统表全部换成InnoDB表

可以使用 select distinct(ENGIN) from information_schema.tables 语句进行查看

3.自增变量持久化

8.0版本之前:自增主键 AUTO_INCREMENT的值如果大于 max(primayr key) + 1,在MySQL重启后,会重置 AUTO_INCREMENT = max(primary key) + 1

8.0版本之后,会对AUTO_INCREMENT值进行持久化,MySQL重启后,该值不会改变。

4.参数修改持久化

8.0版本支持在线修改全局参数并持久化,通过 PERSIST 关键字,将修改的参数持久化到 mysqld-auto.cnf配置文件中,当MySQL重启时,可以从该配置文件获取到最新的配置参数。

5.新增降序索引

MySQL语法上很早就支持降序索引了,但是实际上创建的仍然是升序索引。可通过 show create table 来查看。

降序索引只是对查询中特定的排序顺序有效。

6.group by 不再隐式排序

8.0版本对于 group by 字段不再隐式排序,如果需要排序,必须显示加上 order by 子句。

7.JSON特性增强

MySQL8.x版本大幅改进了对JSON的支持,

  • 增加了 JSON_EXTRACT():基于路径查询参数从JSON字段中抽取数据
  • JSON_ARRAYAGG() & JSON_OBJECTAGG():将数据分别组合到JSON数组和对象中

主从复制中,新增binlog_row_value_option参数,控制JSON数据的传输方式,允许对JSON类型部分修改,在binlog中只记录修改的部分,减少JSON大数据在只有少量修改的情况下,对资源的占用。

8.redo & undo 日志加密

新增两个参数:

  • innodb_redo_log_encrypt
  • innodb_undo_log_encrypt

9.innodb select for update 跳过锁等待

5.7及以前版本,select...for update语句若获取不到锁则会一直等待,直到innodb_lock_wait_timeout超时。

8.0版本,新增 NOWAIT、SKIP LOCKED 语法,跳过锁等待或锁定,立即返回。

  • NOWAIT:若查询的行已经加锁,会立即报错返回。
  • SKIP LOCKED:也会立即返回,但是不报错,只是返回的结果不包含被锁定的行

10.支持不可见索引

visible INVISIBLE关键字在创建表或进行表变更时可设置索引是否可见,索引不可见只是在查询时优化器不使用该索引(force index 下也不使用),同时优化器也不会报索引不存在错误,因为索引仍然是真实存在的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值