mysql新版本新特性


[TOC]

2002年发布mysql-4.0 Beta版

点评:终于蜕变成一个成熟的关系型数据库系统。

  • a. 增加了子查询的支持,字符集增加UTF-8,GROUP BY语句增加了ROLLUP,mysql.user表采用了更好的加密算法;
  • b. innodb开始支持单独的表空间;

2005年发布mysql-5.0

  • a. myisam默认支持256T的表单数据(5.0之前默认4G);
  • b. 添加了存储过程、视图、游标、触发器、查询优化以及分布式事务功能;
  • c. 增加了INFORATION_SCHEMA系统数据库;

2008年发布mysql-5.1

  • a. 增加了Event scheduler、Partitioning、Pluggable storage engine API、Row-based replication、Global级别动态修改general query log和slow query log的支持;
  • b. 基本上就是一个增加了崩溃恢复功能的MyISAM,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发;

2010年12月发布mysql-5.5

  • a. 默认存储引擎从MyISAM更改为InnoDDB;
  • b. 提高了默认线程并发数(innodb_thread_concurrency);
  • c. 改善事务处理中的元数据锁定,例如,事物中一个语句需要锁一个表,会在事物结束时释放这个表,而不是像以前在语句结束时释放表;
  • d. 多个回滚段(Multiple Rollback Segments),之前的innodb版本最大能处理1023个并发处理操作,现在mysql5.5可以处理高达128K的并发事务;
  • e. 支持半同步复制(Semi-synchronous Replication);
  • f. 增加了INFORMATION_SCHEMA表,新的表提供了与InnoDB压缩和事务处理锁定有关的具体信息;

2013年02月发布mysql-5.6

  • a. InnoDB可以限制大量表打开的时候内存占用过多的问题;
  • b. InnoDB性能加强;
  • c. InnoDB死锁信息可以记录到 error 日志,方便分析;
  • d. 支持延时复制,可以让slave跟master之间控制一个时间间隔,方便特殊情况下的数据恢复;
  • e. 支持GTID复制
  • f. 行级复制功能加强,可以降低磁盘、内存、网络等资源开销(只记录能确定行记录的字段即可);
  • g. 复制事件采用crc32校验,增强master/slave 复制数据一致性;
  • h. 大表online ddl
在MySQL的老版本里,由于加索引和加字段是会锁表的,这个期间表上不能更新,因此不能直接在业务库上操作;
不过从5.6版本开始,MySQL已经支持了online DDL特性,也就是在加索引和加字段的过程中,这个表是可以正常读写的;

2015年发布mysql-5.7

  • a. 查询性能得以大幅提升,比 MySQL 5.6 提升 1 倍降低了建立数据库连接的时间;
  • b. 原生 JSON 支持;
  • c. Online alter table以及索引;
  • d. Innodb_buffer_pool在线调整innodb_buffer的大小,引入chunk的概念,每个chunk默认128M,innodb_buffer_pool_size以chunk为单位进行动态增大和缩小;
  • e. 安全性的增强:
数据库安装初始化,废弃了mysql_install_db命令,改为使用mysqld命令配合--iniialize的方式;
Root用户密码不在默认为空,而是随机尝试一个密码,保存在errorlog里面;
密码记录不再是password字段,而是authentication_string字段;
默认安装之后的test库没有了,新增super_read_only参数,来禁止超管的写操作权限;
增加了账户密码有自动过期策略,密码过期之后需强制进行修改;
  • f. Sql_mode的变化:
默认开启严格的sql mode(STRICT_TRANS_TABLES),5.7版本之前默认是no_engine_substitution;
启用严格模式下,如果遇到sql书写有问题,就会直接抛出错误,不会出现超长内容自动被截断的现象,而且不能再grant命令中直接创建用户了,需要使用create user命令;
  • g. 复制功能的增强,主要分为以下几点:
★支持并行复制:基于logical-clock(5.7版本引入),一个组内提交的内事物都可以并行,可以达到接近主库并发效果;
★支持多源复制:支持由多个master向一个slave复制。多用于多个服务器备份到单个服务器上。可用于异地灾备,集中备份;
★支持增强(Loss-less)半同步复制:在mysql5.5半同步复制基础上的增强,在集群架构切换时可以保证数据的一致性。由after_commit模式变成了after_sysnc,提高了复制的效率和数据的可靠性;
★支持组复制(mgr):有点像Oracle里面的rac集群,可以保证多节点并行写入数据比较类似PXC,目前不是很成熟,不建议使用;
  • h: 设置查询SQL的超时(max_execution_time)

    5.7.4引入,max_execution_time 和 show full processlist; 查看正在执行的线程号;

2016年发布mysql-8.0

  • a. 默认字符集从latin1变成了utf8mb4
  • b. 支持创建角色(create role)
  • c. 账户与安全:grant ... identified by '密码' 必须分开执行,不再支持 IDENTIFIED BY PASSWORD;
  • d. 不再支持 tokudb
  • e. 支持参数的设置持久化,修改的参数会自动保存在数据目录下的 auto.cnf 文件中,比如:
SET PERSIST max_connections = 500;
  • f. 新增:隐藏索引(删除索引之前先设置不可见以方便快速回滚):alter table 表名 alter index 索引名 [invisible/visible];
  • g. 支持:降序索引,只有InnoDB引擎支持降序索引,且必须是BTREE降序索引
  • h. 支持:JSON数据节点的索引
  • i. 支持通用表达式(Common Table Expressions,CTE)
  • j. 新增窗口函数,比如rank()
  • 2019.01.21.发布8.0.14,开始支持并行查询,请看耗时
mysql> set local innodb_parallel_read_threads=1;
mysql> select count(*) from ontime;
1 row in set (2 min 33.93 sec)

mysql> set local innodb_parallel_read_threads=DEFAULT;   # 4 is default
mysql> select count(*) from ontime;
1 row in set (21.85 sec)

mysql> set local innodb_parallel_read_threads=32;
mysql> select count(*) from ontime;
1 row in set (5.35 sec)
  • 2019.08.28.mysql5.7添加null字段也很慢,但mysql8以后则秒回;
Copyright © www.sqlfans.cn 2024 All Right Reserved更新时间: 2022-01-14 17:30:08

results matching ""

    No results matching ""