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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

新增的新特性

  • 更简便的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 也叫原子DDLMySQL8开始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简称为CTEMySQL现在支持递归非递归两种形式地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_cryptFLUSH语句的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语句加载插件来替代该工具。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql