2015年10月22日,MySQL发布5.7.9稳定版,虽然MySQL官方手册里已经有很多关于MySQL 5.7新特性的介绍,在这里,还是让我们一起看看在MySQL 5.7里有哪些值得我们关注的新特性吧。 ### MySQL 5.7.9 新特性详解 随着2015年10月22日MySQL 5.7.9稳定版的发布,一系列重要的更新与改进也随之而来。本文将详细解读这些新特性,帮助读者更好地理解这些变化及其带来的实际意义。 #### 一、安全性增强 MySQL 5.7在安全性方面做出了重大改进,具体包括: 1. **用户表的密码管理:**在`mysql.user`表中,`plugin`字段不允许为空,其默认值为`mysql_native_password`,这表明MySQL不再支持旧式的密码格式`mysql_old_password`。 2. **密码过期机制:**引入了密码过期的功能,一旦密码过期,用户需要更改密码才能继续使用账户。这种机制能够有效提高系统的安全性。 3. **初始化时的密码管理:**使用`mysql_install_db`命令初始化时,会自动生成随机密码并将其记录在`/var/log/mysqld.log`文件中。此外,除了创建`root@localhost`账户之外,不会创建其他账户或`test`数据库。 4. **使用`mysqld --initialize`命令:**此命令用于数据库的初始化,若使用`--initial-insecure`参数,则会创建无密码的`root@localhost`账户;否则将创建有密码的账户,密码会直接写入日志文件中。 5. **用户锁定与解锁:**MySQL 5.7允许管理员对普通用户账户进行锁定和解锁操作,进一步增强了安全性和灵活性。 #### 二、InnoDB引擎的增强 InnoDB引擎在MySQL 5.7中的改进主要集中在以下几个方面: 1. **DDL操作优化:**在涉及InnoDB临时表时,DDL操作的性能得到了显著提升。 2. **临时表存储:**在5.7版本中,InnoDB临时表的信息和元数据都存储在新的表`INNODB_TEMP_TABLE_INFO`中。此外,这些临时表会存储在一个非压缩的独立表空间中,每次MySQL服务启动时都会自动创建该表空间。 3. **VARCHAR列长度调整:**支持在线(INPLACE)增加VARCHAR列的长度,但需要注意的是,长度从0到255之间为一个区间,超过255长度属于另一个区间,因此无法跨越255这个界限进行长度扩展。 4. **Page Cleaner线程:**通过设置`innodb_page_cleaners`选项来配置多个Page Cleaner线程,从而提高脏页刷新的效率。 5. **Undo Log管理:**可以通过设置`innodb_undo_log_truncate`等选项来自动删除不再使用的undo log,进一步优化存储空间使用。 6. **Read-Only模式性能优化:**InnoDB的Read-Only模式得到了增强,提高了其运行效率。 7. **普通表空间创建:**支持通过以下语法创建普通表空间: ``` CREATE TABLESPACE `tablespace_name` ADD DATAFILE 'file_name.ibd' [FILE_BLOCK_SIZE=n] ``` #### 三、SQL_MODE的变更 在MySQL 5.7中,对于SQL_MODE的默认设置进行了调整,主要包括: 1. **STRICT_TRANS_TABLES模式默认启用:**这一模式使得对表的数据插入操作更加严格。 2. **ONLY_FULL_GROUP_BY模式增强支持:**对这一模式的支持进行了扩展,并默认启用。这意味着只有完整的GROUP BY子句才会被接受。 3. **NO_ENGINE_SUBSTITUTION模式启用:**此模式默认启用,当指定的存储引擎不可用时,不会使用替代引擎。 #### 四、其他改进 1. **Online操作优化:**包括修改buffer pool大小、修改索引名称(非主键)、修改REPLICATIONFILTER等操作,无需中断服务即可完成。 2. **系统参数查看:**可以通过查询INFORMATION_SCHEMA中的表来查看MySQL的系统参数。 3. **支持单个表上的多个触发器:**允许在同一表上定义多个触发器,增加了灵活性。 4. **执行计划查看:**可以直接针对特定连接查看执行计划,例如使用`EXPLAIN FOR CONNECTION 1024`命令。 5. **日志记录到系统日志文件:**新增`log_syslog`选项,允许将MySQL的日志记录到系统日志文件中。 6. **CTRL+C行为改进:**在客户端输入CTRL+C后,不会立即退出MySQL客户端,而是终止当前正在执行的操作。 7. **表列计算支持:**在创建或修改表时,可以在已有列的基础上定义新的计算列,例如: ``` CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) ); INSERT INTO triangle (sidea, sideb) VALUES (1, 1), (3, 4), (6, 8); ``` MySQL 5.7.9稳定版在安全性、性能以及易用性方面都有显著提升,这些改进将有助于用户更好地管理和利用数据库资源。
- 粉丝: 3
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助