MySQL 8.0新特性

一、MySQL 8.0中添加的功能

1、新的系统字典表

整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储

2、支持DDL 原子操作

InnoDB表的DDL支持事务完整性,要么成功要么回滚,将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作

3、安全和用户管理

  • 新增caching_sha2_password认证插件,并且是默认的身份认证插件。性能和安全方面加强
  • 权限支持role
  • 新增密码历史记录功能,限制重复使用以前的密码

4、支持资源管理

支持创建和管理资源组,并允许将服务器运行的线程分配给特定的组,以便线程根据资源组可用的资源执行

5、innodb 增强

  • 自增列优化,修复MySQL的bug#199,该bug导致在DB重启时,MySQL会将表上最大的自增值作为最大值,下次分配是分配max(id)+1,如果是归档表或者其它模式删除数据后,DB系统重启,自增值可能被重用
  • 新增INFORMATION_SCHEMA.INNODB_CACHED_INDEXES,查看每个索引缓存在InnoDB缓冲池中的索引页数
  • InnoDB临时表都将在共享临时表空间ibtmp1中创建
  • 对于SELECT ... FOR SHARE和SELECT ... FOR UPDATE语句,InnoDB支持NOWAIT和SKIP LOCKED
  • innodb_undo_tablespaces的最小值为2,并且不再允许将innodb_undo_tablespaces设置为0。 最小值2确保回滚段始终在撤消表空间中创建,而不是在系统表空间中创建
  • 支持 ALTER TABLESPACE ... RENAME TO 语法
  • 新增innodb_dedicated_server,让InnoDB根据服务器上检测到的内存量自动配置innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method
  • 新增INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF视图
  • 新增了动态配置项 innodb_deadlock_detect,用来禁用死锁检查,因为在高并发系统中,当大量线程等待同一个锁时,死锁检查会大大拖慢数据库
  • 支持使用innodb_directories选项在服务器脱机时将表空间文件移动或恢复到新位置

6、MySQL 8.0更好支持文档型数据库和JSON

7、优化

  • 不可见索引,开始支持invisible index,(感觉又和Oracle一样了),在优化SQL的过程中可以设置索引为不可见,优化器变不会利用不可见索引
  • 支持降序索引,可以对索引定义 DESC,之前,索引可以被反序扫描,但影响性能,而降序索引就可以高效的完成

8、支持RANK(), LAG()、NTILE()等函数

9、正则表达式增强,提供了REGEXP_LIKE(),EGEXP_INSTR(), REGEXP_REPLACE(), REGEXP_SUBSTR()等函数

10、新增备份锁,允许在线备份期间的DML,同时防止可能导致快照不一致的操作。 备份锁由LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语法支持

11、字符集  默认字符集由latin1变为utf8mb4

12、配置文件增强

MySQL 8.0版本支持在线修改全局参数持久化,通过加上PERSIST关键字,可以将调整持久化到新的配置文件中,再次重启db还可以应用到最新的参数。对于加上 PERSIST 关键字修改参数命令,MySQL系统会生成一个包含json格式数据的 mysqld-auto.cnf 文件,比如执行:

set PERSIST  expire_logs_days=10 ; #内存和json文件都修改,重启还生效

set GLOBAL  expire_logs_days=10 ; #只修改内存,重启丢失

系统会在数据目录下生成一个包含如下内容的 mysqld-auto.cnf 的文件:

{ "mysql_server": {"expire_logs_days": "10" } }

当 my.cnf 和 mysqld-auto.cnf 同时存在时,后者具有高优先级。

13、直方图

MySQL 8.0 版本开始支持期待已久直方图。优化器会利用column_statistics的数据,判断字段的值的分布,得到更准确的执行计划。

可以使用 ANALYZE TABLE table_name [UPDATE HISTOGRAM on col_name with N BUCKETS |DROP HISTOGRAM ON  clo_name] 来收集或者删除直方图信息

14、支持会话级别SET_VAR 动态调整部分参数,有利于提升语句性能。

select /*+ SET_VAR(sort_buffer_size = 16M) */ id  from test order id ;

insert  /*+ SET_VAR(foreign_key_checks=OFF) */ into test(name) values(1);

15、默认参数的调整

调整back_log的默认值,保持和 max_connections一致,增强突发流量带来的连接处理容量。

修改 event_scheduler 默认为ON,之前默认是关闭的。

调整max_allowed_packet 的默认值,从4M增加到64M。

调整bin_log,log_slave_updates默认值为on。

调整expire_logs_days的过期时间为30天,老版本是7天,生产环境时,检查该参数,防止binlog过多造成空间紧张。

调整innodb_undo_log_truncate 默认为ON

调整innodb_undo_tablespaces 默认值为2

调整innodb_max_dirty_pages_pct_lwm 默认值10

调整innodb_max_dirty_pages_pct默认值为90

新增innodb_autoinc_lock_mode 默认值为2

16、InnoDB性能提升

废除buffer pool mutex,将原来一个mutex拆分成多个,提高并发

拆分LOCK_thd_list 和 LOCK_thd_remove 这两个mutex,大约可提高线程链接效率5%。

17、行缓存

MySQL8.0的优化器可以估算将要读取的行数,因此可以提供给存储引擎一个合适大小的row buffer来存储需要的数据。大批量的连续数据扫描的性能将受益于更大的record buffer

18、改进扫描性能

改进InnoDB范围查询的性能,可提升全表查询和范围查询 5-20%的性能。

19、成本模型

InnoDB缓冲区可以估算缓存区中的有多少表和索引,这可以让优化器选择访问方式时知道数据是否可以存储在内存中还是必须存储到磁盘上。

20、重构SQL分析器

改进SQL分析器。旧的分析器由于其语法复杂性和自顶向下的分析方式从而有严重的限制,导致难以维护和扩展。

二、MySQL8.0中被废弃的特性

  • 废弃validate_password 插件
  • 废弃ALTER TABLESPACE和DROP TABLESPACE ENGINE子句
  • 废弃JSON_MERGE()  -> JSON_MERGE_PRESERVE()取代
  • 废弃 have_query_cache 系统变量

三、MySQL8.0被移除的功能

  • query cache 功能被移除,相关的系统变量也被移除
  • mysql_install_db  被 mysqld --initialize or --initialize-insecure 替代
  • INFORMATION_SCHEMA下的INNODB_LOCKS和INNODB_LOCK_WAITS表已被删除。 用Performance Schema data_locks和data_lock_waits表替代
  • INFORMATION_SCHEMA下的四张表移除:GLOBAL_VARIABLES, SESSION_VARIABLES, GLOBAL_STATUS, SESSION_STATUS
  • InnoDB不再支持压缩的临时表。
  • 不再支持 PROCEDURE ANALYSE()语法

Renamed InnoDB Information Schema Views

Old Name                                      New Name

INNODB_SYS_COLUMNS            INNODB_COLUMNS

INNODB_SYS_DATAFILES            INNODB_DATAFILES

INNODB_SYS_FIELDS                    INNODB_FIELDS

INNODB_SYS_FOREIGN                    INNODB_FOREIGN

INNODB_SYS_FOREIGN_COLS    INNODB_FOREIGN_COLS

INNODB_SYS_INDEXES                    INNODB_INDEXES

INNODB_SYS_TABLES                    INNODB_TABLES

INNODB_SYS_TABLESPACES            INNODB_TABLESPACES

INNODB_SYS_TABLESTATS             INNODB_TABLESTATS

INNODB_SYS_VIRTUAL                     INNODB_VIRTUAL

remove的server选项:

--temp-pool

--ignore-builtin-innodb

--des-key-file

--log-warnings

--ignore-db-dir

remove的配置选项:

innodb_file_format

innodb_file_format_check

innodb_file_format_max

innodb_large_prefix

remove的系统变量

information_schema_stats  ->information_schema_stats_expiry

ignore_builtin_innodb

innodb_support_xa

show_compatibility_56

have_crypt

date_format

datetime_format

time_format

max_tmp_tables

global.sql_log_bin(session.sql_log_bin保留)

log_warnings ->log_error_verbosity

multi_range_count

secure_auth

sync_frm

tx_isolation -> transaction_isolation

tx_read_only -> transaction_read_only

ignore_db_dirs

query_cache_limit

query_cache_min_res_unit

query_cache_size

query_cache_type

query_cache_wlock_invalidate

innodb_undo_logs -->innodb_rollback_segments

remove的状态变量

Com_alter_db_upgrade

Slave_heartbeat_period

Slave_last_heartbeat

Slave_received_heartbeats

Slave_retried_transactions, Slave_running

Qcache_free_blocks

Qcache_free_memory

Qcache_hits

Qcache_inserts

Qcache_lowmem_prunes

Qcache_not_cached

Qcache_queries_in_cache

Qcache_total_blocks

Innodb_available_undo_logs status

remove的函数

JSON_APPEND() --> JSON_ARRAY_APPEND()

ENCODE()

DECODE()

DES_ENCRYPT()

DES_DECRYPT()

remove的client选项:

--ssl  --ssl-verify-server-cert 被删除,用--ssl-mode=VERIFY_IDENTITY |REQUIRED |DISABLED 替代

--secure-auth

参考:https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-additions

原文地址:http://blog.51cto.com/395469372/2072691

时间: 2024-11-08 23:39:19

MySQL 8.0新特性的相关文章

Mysql 8.0 新特性测试

Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Postgresql和Mariadb中早已存在role这个特性. create role role_test; grant select,insert,delete,update on zhongwc.tab01 to role_test; create user 'user1'@'%' identif

MySQL 8.0新特性 -- bit-wise操作

bit函数和操作符 名称 说明  &  按位与  >>  右移  <<  左移  ^  按位异或  bit_count()  返回位数  |  按位或  ~  按位取反 在mysql8之前,bit函数和操作符只是支持64位的整数(bigint),返回值也是64位的整数(bigint).所以最大支持到64位.非bigint参数会被转化成bigint,然后参与操作,所以可能会发生截断. 在8.0中,bit函数和操作符支持二进制字符串类型的参数,比如binary.varbinar

MySQL 8.0新特性之原子DDL

文章来源:爱可生云数据库 简介 MySQL8.0 开始支持原? DDL(atomic DDL),数据字典的更新,存储引擎操作,写?进制日志结合成了一个事务.在没有原?DDL之前,DROP TABLE test1,test2:如遇到server crash,可能会有test1被drop了,test2没有被drop掉.下面来看下在MySQL8.0之前和MySQL8.0 数据字典的区别. 在MySQL8.0 之前,Data Dictionary除了存在与.FRM, .TRG, .OPT ?件外,还存在

mysql 8.0 新特性

https://www.cnblogs.com/coco-caiyuan/articles/11526994.html https://www.cnblogs.com/songgj/p/10658916.html 原文地址:https://www.cnblogs.com/newlangwen/p/11792055.html

Java基础加强-(注解,类加载器,servlet3.0新特性)

1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annotation就是提供了一种为程序元素设置元数据的方法,可用于修饰包.类.构造器.方法.成员变量.参数和局部变量的声明,这些信息被存储在Annotation的“name=value”对中. Annotation能被用来为程序元素(类.方法.成员变量等)设置元数据,比如一段代码的作者或者告诉编译器禁止一些特

MySQL 5.7 新特性大全和未来展望

MySQL 5.7 新特性大全和未来展望 jopen 2015-12-31 16:06:46 • 发布 摘要:美图公司数据库高级 DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计.之前在「高可用架构」发表的<单表 60 亿记录等大数据场景的 MySQL 优化和运维之道>广受好评. 本文转自微信公众号: 高可用架构 作者:杨尚刚 引用 美图公司数据库高级 DBA,负责美图后端数据存储平台建设和架构设计.

MySQL8.0新特性【转】

Server层,选项持久化 mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 512 | | mysqlx_max_connections | 100 | +------------------------+-------

Day07 jdk5.0新特性&Junit&反射

day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装MyEclipse 先安装了JDK ? MyEclipse介绍 ? MyEclipse是Eclipse的一个插件: MyEclipse是需要花钱的: MyEclipse官网不在欢迎中国人登录: ? MyEclipse使用 ? 1 创建项目 选择工作空间: 工作空间路径不能有空格和中文: 工作空间以班名

Atitit.&#160;C#.net&#160;clr&#160;2.0&#160;&#160;4.0新特性

Atitit. C#.net clr 2.0  4.0新特性 1. CLR内部结构1 2. CLR 版本发展史3 3. CLR 2.0 3 4. CLR 4 新特性 概览4 4.1.1.  托管与本地代码的互操作5 4.1.2.    垃圾回收6 4.1.3.    代码约定6 4.1.4.    Corrupted state exception6 4.1.5.     新的安全模型7 4.1.6.     同一个进程,多个CLR7 4.1.7.     基本类库7 5. CLR最新发展8 6