Post

MySQL Version diff

5.6

  • InnoDb 开始支持全文索引
  • InnoDb 支持设置页面大小
  • 通过 innodb_page_size 指定,默认是 16KB,对于工作负载和存储设备(尤其是具有小块大小的 SSD 设备)的某些组合,较小的页面大小可以帮助避免冗余或低效的 I / O
  • InnoDB redolog 总大小的限制从之前的 4G 扩展至 512G
  • InnoDB 现在可以限制大量表打开的时候内存占用过多的问题(比如这里提到的)(第三方已有补丁)
  • InnoDB 性能加强。如分拆 kernel mutex;flush 操作从主线程分离;多个 perge 线程;大内存优化等
  • InnoDB 死锁信息可以记录到 error 日志,方便分析
  • 优化器性能提升,引入了 ICP,MRR,BKA 等特性,针对子查询进行了优化
  • Undo Log 可保存在独立表空间中,因其是随机 IO,更适合放到 SSD 中。但仍然不支持空间的自动回收
  • 支持 Online DDL。ALTER 操作不再阻塞 DML
  • MySQL 现在支持延迟复制,以便从属服务器故意落后于主服务器至少指定的时间量。默认延迟为 0 秒
  • 之前,TIMESTAMP 每个表最多可以自动将一列初始化或更新为当前日期和时间,目前已没有该限制

5.7

  • 支持组复制和 InnoDB Cluster
  • 支持多源复制
  • 支持在线修改 Buffer pool 的大小
  • 支持 UNDO 表空间的自动回收
  • 查询优化器的增强与重构,提升性能
  • 可查看当前 session 正在执行的 SQL 的执行计划(EXPLAIN FOR CONNECTION)
  • 优化了 Performance Schema,其内存使用减少
  • 原生支持 JSON 类型,并引入了众多 JSON 函数
  • 可设置 SELECT 操作的超时时长(max_execution_time)
  • 引入了 innodb_deadlock_detect 选项,在高并发场景下,可使用该选项来关闭死锁检测
  • GIS 的增强,包括使用 Boost.Geometry 替代之前的 GIS 算法,InnoDB 开始支持空间索引

8.0

  • 提高性能:官宣比 5.7 快 2 倍
  • PERFORMANCE_SCHEMA 查询性能提升,其已内置多个索引
  • 支持不可见索引(Invisible index)
  • 支持降序索引
  • 引入了 innodbdedicated_server 选项,可基于服务器的内存来动态设置 innodb_buffer_pool_size,innodb_log_file- size 和 innodb_flush_method
  • 支持秒加字段(Instant add column)功能
  • JSON 字段的部分更新(JSON Partial Updates)
  • 支持自增主键的持久化
  • 默认字符集由 latin1 修改为 utf8mb4
  • 默认开启 UNDO 表空间,且支持在线调整数量(innodb_undo_tablespaces)。在 MySQL - 5.7 中,默认不开启,若要开启,只能初始化时设置
  • Redo Log 的优化,包括允许多个用户线程并发写入 log buffer,可动态修改 innodb_log_buffer_size 的大小
  • 默认的内存临时表由 MEMORY 引擎更改为 TempTable 引擎,相比于前者,后者支持以变长方式存储 VARCHAR,VARBINARY 等- 变长字段。从 MySQL 8.0.13 开始,TempTable 引擎支持 BLOB 字段
  • SELECT … FOR SHARE 和 SELECT … FOR UPDATE 语句中引入 NOWAIT 和 SKIP LOCKED 选项,解决电商场景热点行问题
  • 正则表达式的增强,新增了 4 个相关函数,REGEXP_INSTR(),REGEXP_LIKE(),REGEXP_REPLACE(),REGEXP_SUBSTR()
  • 查询优化器在制定执行计划时,会考虑数据是否在 Buffer Pool 中。而在此之前,是假设数据都在磁盘中
  • GROUP BY 语句不再隐式排序
  • 增加了对于客户端报错信息的统计(performance_schema.events_errors_summary_xxx)
  • BLOB, TEXT, GEOMETRY 和 JSON 字段允许设置默认值
This post is licensed under CC BY 4.0 by the author.