新增的新特性

  • 更简便的NoSQL支持。
  • 更好的索引,新增了隐藏索引降序索引隐藏索引可以用来去掉索引对查询性能的影响。在查询中混合存在多列索引时,使用降序索引可以提高查询的性能。
  • 更完善的JSON支持,增加了聚合函数,JSON_ARRAYAGG()JSON_OBJECTAGG(),将参数聚合为JSON数组或对象,新增了行内操作符->>,是列路径运算符->的增强,对JSON排序做了提升,并优化了JSON的更新操作。
  • 安全和账户管理,新增了caching_sha2_password授权插件、角色、密码历史记录和FIPS模式支持,这些提高了数据库的安全性。
  • InnoDB的变化,InnoDB是MySQL默认的存储引擎,是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。在MySQL8.0中,InnoDB在自增、索引、加密、死锁、共享锁等方面做了大量的改进和优化,并且支持原子数据定义语言(Automic DDL),提高了数据安全性,对事务提供更好的支持。
  • 数据字典,在之前的MySQL版本中,字典数据都存储在元数据文件和非事务表中。从MySQL8开始,新增了事务数据字典,在这个字典里存储着数据库对象信息,这些数据字典存储在内部事务表中。
  • 原子数据定义语句(Automic DDL, 也叫原子DDL),MySQL8开始,InnoDB支持。原子DDL将与DDL操作相关的数据字典更新、存储引擎操作、二进制日志谢日结合到一个单独的原子事务中,这使得及时服务器崩溃,事务也会提交或回滚。使用支持原子操作的存储引擎所创建的表,在执行DROP TABLE、CREATE TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE、CREATE TABLESPACE、DROP TABLESPACE等操作时,都支持原子操作,即事务要么完全操作成功,要么失败后回滚,不在进行部分提交。
  • 资源管理,开始支持创建和管理资源组。
  • 字符集支持,默认的字符集从latin1更改为utf8mb4,并首次添加了日语所特定使用的集合,utf8mb4_ja_0900_as_cs。
  • 优化器增强,MySQL优化器开始支持隐藏索引降序索引。隐藏索引不会被优化器使用,验证索引的必要性时不需要删除索引,先将索引隐藏,如果优化器性能无影响就可以真正地删除索引。降序索引允许优化器对多个列进行排序,并且允许排序顺序不一致。
  • 公用表表达式(Common Table Expressions),简称为CTE,MySQL现在支持递归非递归两种形式地CTE。CTE通过在SELECT语句或者其他特定语句前使用WITH语句对临时结果集进行命名。
  • 窗口函数,开始支持窗口函数,之前版本的大部分聚合函数在MySQL8中也可以作为窗口函数来使用。
  • 正则表达式支持,MySQL在8.0.4以后的版本中,采用支持Unicode的国际化组件库实现正则表达式操作,这种方式不仅能提供完全的Unicode支持,而且时多字节安全编码。MySQL增加了REGEXP_LIKE()、 EGEXP_INSTR()、REGEXP_REPLACE()和 REGEXP_SUBSTR()等函数来提升性能。另外,regexp_stack_limit和regexp_time_limit 系统变量能够通过匹配引擎来控制资源消耗。
  • 内部临时表,TempTable存储引擎取代MEMORY存储引擎成为内部临时表的默认存储引擎。TempTable存储引擎为VARCHAR和VARBINARY列提供高效存储。internal_tmp_mem_storage_engine会话变量定义了内部临时表的存储引擎,可选的值有两个,TempTable和MEMORY,其中TempTable为默认的存储引擎。temptable_max_ram系统配置项定义了TempTable存储引擎可使用的最大内存数量。
  • 日志记录,在MySQL8中错误日志子系统由一系列MySQL组件构成。这些组件的构成由系统变量log_error_services来配置,能够实现日志事件的过滤和写入。
  • 增强的MySQL复制,MySQL8复制支持对JSON文档进行部分更新的二进制日志记录,该记录使用紧凑的二进制格式,从而节省记录完整JSON文档的空间。当使用基于语句的日志记录时,这种紧凑的日志记录会自动完成,并且可以通过将新的binlog_row_value_options系统变量值设置为PARTIAL_JSON来启用。

移除的旧特性

  • 查询缓存,删除的项有

    • 语句,FLUSH QUERY CACHERESET QUERY CACHE
    • 系统变量,query_cache_limit、query_cache_min_res_unit、query_cache_size、query_cache_type、query_cache_wlock_invalidate
    • 线程变量,checking privileges on cached query、checking query cache for query、invalidating query cache entries、sending_cached result to client、storing result in query cache、waiting for query cache lock
  • 加密相关,删除的内容有:ENCODE()DECODE()ENCRYPT()DES_ENCRYPT()DES_DECRYPT()函数,配置项des-key-file,系统变量have_crypt,FLUSH语句的DES_KEY_FILE选项,HAVE_CRYPT CMake选项。对于移除的ENCRYPT()函数,考虑使用SHA2()替代,对于其他移除的函数,使用AES_ENCRYPT()AES_DECRYPT()替代
  • 空间函数相关,只保留了ST_MBR函数
  • \N和NULL,在SQL语句中,解析器不再将\N视为NULL,所以在SQL语句中应使用NULL代替\N。这项变化不会影响使用LOAD DATA INFILE 或者SELECT…INTO OUTFILE操作文件的导入和导出。在这类操作中,NULL仍等同于\N
  • mysql_install_db,被移除,数据字典的初始化需要调用带着initialize或者--initialize-insecure选项的mysqld来代替实现。另外,--bootstrapINSTALL_SCRIPTDIRCMake也被删除。
  • 通用分区处理程序,被移除,为了实现给定表分区,表所使用的存储引擎需要自有的分区处理程序。提供本地分区支持的MySQL存储引擎有两个,即InnoDB和NDB,而在MySQL8中只支持InnoDB
  • 系统和状态变量信息,在INFORMATION_SCHEMA数据库中,对系统和状态变量不在进行维护。GLOBAL_VARIABLESSESSION_VARIABLESGLOABL_STATUSSESSION_STATUS表都已被删除。另外,系统变量show_compatibility_56也已被删除。被删除的状态变量还有Slave_retried_transactionsSlave_running。以上被删除的内容都可以使用性能模式中对应的内容进行代替。
  • mysql_plugin工具,mysql_plugin工具用来配置MySQL服务器插件,现已被删除,可使用--plugin-load或者--plugin-load-add选项在服务器启动时加载插件或者在运行时使用INSTALL PLUGIN语句加载插件来替代该工具。

Mysql基础篇(10)—— MySQL8.0新特性概览相关推荐

  1. MySQL基础篇13【MySQL8.0新特性】

    目录 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 新特性1:窗口函数 2.1 使用窗口函数前后对比 2.2 窗口函数分类 2.3 语法结构 ...

  2. mysql 直方图统计_MySQL 8.0 新特性之统计直方图

    原标题:MySQL 8.0 新特性之统计直方图 | 译者简介 译者 韩杰·沃趣科技MySQL数据库工程师 熟悉mysql体系架构.主从复制,熟悉问题定位与解决 出品 沃趣科技 原文链接: https: ...

  3. mysql8.0 新特性 sql_mode(mysql 报错1055)

    问题描述 因为开发环境和正式环境所使用的mysql数据库的版本不一样,开发环境使用的时候5.7而正式环境使用的是8.0,而在Mysql的8.0版本中默认是开启sql_mode = only_full_ ...

  4. MySQL8.0 - 新特性 - 临时表改进

    temptable engine 我们知道UNION, DERIVED TABLE, CTE, 子查询或者distinct order by之类的查询都可能用到临时表来存储中间结果,官方文档中列举了几 ...

  5. MySQL8.0 - 新特性 - 安全及权限相关改进

    MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的 ...

  6. Mysql8.0新特性之详细版本

    1. 账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc #EDC'; ...

  7. mysql8.0 新特性

    1.  账户与安全# 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC' ...

  8. MySQL8.0 - 新特性 - Instant Add Column

    MySQL8.0开始对一些DDL操作做了大量的优化,例如原子DDL, 快速DDL(只修改元数据),前者解决了长期以来mysql的一大诟病,后者则提升了dba同学的生活品质 官方文档列出了一些可以快速d ...

  9. MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件

    mysql5.8开始将caching_sha2_password作为默认的身份验证插件 该caching_sha2_password和 sha256_password认证插件提供比mysql_nati ...

最新文章

  1. python argparse库_Python的argparse库使用详解
  2. DataScience:对严重不均衡数据集进行多种采样策略(随机过抽样、SMOTE过采样、SMOTETomek综合采样、改变样本权重等)简介、经验总结之详细攻略
  3. mongodb创建用户名和密码_mongodb用studio3T进行数据备份和用户的创建
  4. GDCM:gdcm::FilenameGenerator的测试程序
  5. linux tomcat 日志乱码,Linux下TOMCAT中日志出现中文乱码
  6. ajax ssm 页面跳转_Shiro 教程,Ajax请求拦截跳转页面方案
  7. 16节课搞懂大数据,视频教程限时免费领取
  8. React 组件间通讯
  9. 四级信息安全工程师考试大纲
  10. Arduino、arm、树莓派、单片机四者区别和关系
  11. Mysql,Oracle varchar2 字节长度
  12. ubuntu16.04 安装显卡驱动
  13. 赛尔号无限宇宙服务器,赛尔号无限宇宙
  14. lms全称是什么意思_lms是什么意思?
  15. 读书百客:《送客之江西》赏析
  16. css如何将彩色图片变为黑白图片
  17. @Scheduled的使用
  18. OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()
  19. Pygame - Python游戏编程入门(3)
  20. Linux下QT平台Mysql数据库开发环境配置

热门文章

  1. Java桌面截图程序(带快捷键)
  2. SpringBoot+WebSocket问题:Failed to register @ServerEndpoint class
  3. 2020年“有史以来”全网最全1309道BAT大厂java面试题,mongodb原理知识
  4. 我的爬虫 之 爬今日头条街拍图片
  5. Linux系统配置DNS服务器
  6. C语言中task的用法,C++11中std::packaged_task的使用详解
  7. Spring计划会议
  8. linux云计算工程师百度百科,广州学习linux云计算工程师
  9. mac重启之后,中/英 键无法快速切换输入法
  10. Ural 2037. Richness of binary words (打表+构造)