MySQL主流版本更新记录

5.5

  • InnoDB代替MyISAM成为MySQL默认的存储引擎;
  • 多核扩展,能更充分地使用多核CPU;
  • InnoDB的性能提升,包括支持索引的快速创建,表压缩,I/O子系统的性能提升,PURGE操作从主线程中剥离出来,Buffer Pool可拆分为多个Instances;
  • 半同步复制;
  • 引入utf8mb4字符集,可用来存储emoji表情;
  • 引入metadata locks(元数据锁);
  • 分区表的增强,新增两个分区类型:RANGE COLUMNSLIST COLUMNS
  • MySQL企业版引入线程池;
  • 可配置IO读写线程的数量(innodb_read_io_threadsinnodb_write_io_threads)。在此之前,其数量为1,且不可配置;
  • 引入innodb_io_capacity选项,用于控制脏页刷新的数量。

5.6

该版本是MySQL历史上一个里程碑式的版本,这也是目前生产上应用得最广泛的版本。

  • GTID复制;
  • 无损复制;
  • 延迟复制;
  • 基于库级别的并行复制;
  • mysqlbinlog可远程备份binlog;
  • TIME, DATETIMETIMESTAMP进行了重构,可支持小数秒。DATETIME的空间需求也从之前的8个字节减少到5个字节;
  • Online DDL。ALTER操作不再阻塞DML;
  • 可传输表空间(transportable tablespaces);
  • 统计信息的持久化。避免主从之间或数据库重启后,同一个SQL的执行计划有差异;
  • 全文索引;
  • InnoDB Memcached plugin;
  • EXPLAIN可用来查看DELETEINSERTREPLACEUPDATEDML操作的执行计划,在此之前,只支持SELECT操作;
  • 分区表的增强,包括最大可用分区数增加至8192,支持分区和非分区表之间的数据交换,操作时显式指定分区;
  • Redo Log总大小的限制从之前的4G扩展至512G;
  • Undo Log可保存在独立表空间中,因其是随机IO,更适合放到SSD中。但仍然不支持空间的自动回收;
  • 可dump和load Buffer pool的状态,避免数据库重启后需要较长的预热时间;
  • InnoDB内部的性能提升,包括拆分kernel mutex,引入独立的刷新线程,可设置多个purge线程;
  • 优化器性能提升,引入了ICP,MRR,BKA等特性,针对子查询进行了优化。

5.7

  • 3倍更快的性能;
  • InnoDB 相关改进;
  • 新的优化器;
  • 多源复制;
  • GIS 相关改进;
  • 原生 JSON 支持;
  • 组复制;
  • InnoDB Cluster;
  • 增强半同步(AFTER_SYNC);
  • 基于WRITESET的并行复制;
  • 在线开启GTID复制;
  • 在线设置复制过滤规则;
  • 在线修改Buffer pool的大小;
  • 在同一长度编码字节内,修改VARCHAR的大小只需修改表的元数据,无需创建临时表;
  • 可设置NUMA架构的内存分配策略(innodb_numa_interleave);
  • 透明页压缩(Transparent Page Compression);
  • UNDO表空间的自动回收;
  • 查询优化器的重构和增强;
  • 可查看当前正在执行的SQL的执行计划(EXPLAIN FOR CONNECTION);
  • 引入了查询改写插件(Query Rewrite Plugin),可在服务端对查询进行改写;
  • EXPLAIN FORMAT=JSON会显示成本信息,这样可直观的比较两种执行计划的优劣;
  • 引入了虚拟列,类似于Oracle中的函数索引;
  • 新实例不再默认创建test数据库及匿名用户;
  • 引入ALTER USER命令,可用来修改用户密码,密码的过期策略,及锁定用户等;
  • mysql.user表中存储密码的字段从password修改为authentication_string
  • 表空间加密;
  • 优化了Performance Schema,其内存使用减少。Performance Schema引入了众多instrumentation。常用的有Memory usage instrumentation,可用来查看MySQL的内存使用情况,Metadata Locking Instrumentation,可用来查看MDL的持有情况,Stage Progress * instrumentation,可用来查看Online DDL的进度;
  • 同一触发事件(INSERTDELETEUPDATE),同一触发时间(BEFOREAFTER),允许创建多个触发器。在此之前,只允许创建一个触发器;
  • InnoDB原生支持分区表,在此之前,是通过ha_partition接口来实现的;
  • 分区表支持可传输表空间特性;
  • 集成了SYS数据库,简化了MySQL的管理及异常问题的定位;
  • 原生支持JSON类型,并引入了众多JSON函数;
  • 引入了新的逻辑备份工具mysqlpump,支持表级别的多线程备份;
  • 引入了新的客户端工具mysqlsh,其支持三种语言:JavaScript, Python and SQL。两种API:X DevAPI,AdminAPI,其中,前者可将MySQL作为文档型数据库进行操作,后者用于管理InnoDB Cluster;
  • mysql_install_db被mysqld --initialize代替,用来进行实例的初始化;
  • 原生支持systemd
  • 引入了super_read_only选项;
  • 可设置SELECT操作的超时时长(max_execution_time);
  • 可通过SHUTDOWN命令关闭MySQL实例;
  • 引入了innodb_deadlock_detect选项,在高并发场景下,可使用该选项来关闭死锁检测;
  • 引入了Optimizer Hints,可在语句级别控制优化器的行为,如是否开启ICP,MRR等,在此之前,只有Index Hints;
  • GIS的增强,包括使用Boost.Geometry替代之前的GIS算法,InnoDB开始支持空间索引。

你可能感兴趣的:(#,MySQL)