mysql8新特性(一)

https://www.oschina.net/news/95325/mysql-8-0-ga-released 

http://blog.itpub.net/28218939/viewspace-2154297/

 

 

 

 

分区表的MySQL版本升级:

 

目前MySQL 8.0 只有InnoDB存储引擎支持分区表,如果使用其他存储引擎创建分区表,将会报错。如果在5.7及之前的版本里使用非InnoDB的分区表,不支持直接升级到8.0版本,需要先转换成InnoDB表,或者删除分区,然后才能升级到8.0版本。

 

 

权限管理:

默认密码认证插件

MySQL 8.0.4 版本修改了默认的身份认证插件,从老的mysql_native_password插件变为新的caching_sha2_password,并将其作为默认的身份认证机制,同时客户端对应的libmysqlclient也默认使用新的认证插件。

 

系统表更换为InnoDB引擎

系统表全部换成事务型的innodb表,默认的MySQL实例将不包含任何MyISAM表,除非手动创建MyISAM表。

 DDL原子化

InnoDB表的DDL支持事务完整性,要么成功要么回滚,将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作,该表是隐藏的表,通过show tables无法看到。通过设置参数,可将ddl操作日志打印输出到mysql错误日志中。

mysql> set global log_error_verbosity=3;
mysql> set global innodb_print_ddl_logs=1;

MySQL5.7执行drop命令 drop table t1,t2; 如果t1存在,t2不存在,会提示t2表不存在,但是t1表仍然会被删除。

MySQL8.0执行同样的drop命令,会提示t2表不存在,而且t1表不会被删除,保证了原子性。

ddl操作(针对表)的原子性前提是该表使用的存储引擎是InnoDB

 

 

自增列持久化

解决了之前的版本,主键重复的问题。

MySQL5.7及其以前的版本,MySQL服务器重启,会重新扫描表的主键最大值,如果之前已经删除过id=100的数据,但是表中当前记录的最大值如果是99,那么经过扫描,下一条记录的id是100,而不是101。
  
MySQL8.0则是每次在变化的时候,都会将自增计数器的最大值写入redo log,同时在每次检查点将其写入引擎私有的系统表。则不会出现自增主键重复的问题。

###############################

 

 

########################

posted @ 2018-06-16 09:47  igoodful  阅读(263)  评论(0编辑  收藏  举报