MySQL5.7新特性包含了在线操作,增大varchar,索引重命名,支持JSON类型

122 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天

大家好,我是小冷。 上一篇了解了InnoDB锁竞争情况和锁实现 ,具体地址请点击

这一篇介绍下MySQL5.7新特性有哪些?

InnoDB存储引擎的在线操作

MySQL 5.7中,InnoDB存储引擎增加了一些新的功能。其中在线操作非常重要,包括在线添加主键、在线增大VARCHAR列长和在线重命名索引。

MySQL 5.7提供了确保全局事务始终在线的方式。因此,读写的操作在此过程中是可行的,并且服务器不需要同步或者重启。在此次更新之前,用户不得不停止所有的更新操作,同步所有的服务器,并且同时重启服务器。这意味着,为了确保全局事务,必须提前规划好服务器的宕机时间。

MySQL 5.7支持在线操作功能,可以满足需要在生产环境中管理MySQL的开发者和数据库管理在线操作的需求。

在线--添加主键

MySQL 5.7的在线操作功能主要通过加入在线更改InnoDB Bufferf Pool特性来实现。通过动态修改innodb_buffer_pool_size值,可以在无宕机的情况下修改缓冲池的大小。

在线--增大VARCHAR列长

在MySQL 5.7中,数据库管理员可以在线增大VARCHAR字段的长度。需要注意的是,目前只支持255字节内的VARCHAR字段增大列长,因为超过255字节,innodb层存储数据表示列长度的部分就得多扩展一个字节。

注意的点是:

在线增大VARCHAR的列长,必须控制在255以内,而且不支持在线减少VARCHAR的列长.

在线--重命名索引

MySQL 5.7新增在线重命名索引功能,通过ALTER TABLE、RENAME INDEX操作实现该功能。

支持JSON类型

大家都知道MySQL是关系型数据库,在MySQL 5.7之前,没有提供对非结构化数据的支持,但是如果用户有这样的需求,也可以通过MySQL的BLOB来存储非结构化的数据。对支持JSON的做法是在Server层提供一些便于操作JSON的函数,简单地将JSON编码成BLOB,然后交由存储引擎层进行处理。

全文索引的加强

MySQL 5.7添加了灵活性和优化性更高的全文搜索。例如,全本索引支持外部的分析器,就像MyISAM。插件可以替代内置分析器,也可以作为一个前端来使用。MySQL 5.7实现了标记优化器,这个优化器可以将查询结果传递到InnoDB,因此InnoDB可以跳过全文检索部分。

MySQL 5.7为CJK提供了一个默认的全文分析器(N-GRAM分析器)