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,同时在每次检查点将其写入引擎私有的系统表。则不会出现自增主键重复的问题。
###############################
########################
igoodful@qq.com