一、动态生成的列(Generated Columns)
MySQL现在支持在创建和修改列的时候使用generated columns。他的值由对应的表达式计算得出。
它可以有两种存储方式,默认值是VIRTUAL:虚拟化(VIRTUAL)的 (读取列时计算的)
存储到数据库(STORED)的,会实际占用空间 (当行被插入或更新时计算的)
默认创建方式:CREATE TABLE triangle (
sidea DOUBLE,
sideb DOUBLE,
sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))
);
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);
如果要选择STORED:CREATE TABLE triangle (
sidea DOUBLE,
sideb DOUBLE,
sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) STORED
);
mysql> SELECT * FROM triangle;
+-------+-------+--------------------+
| sidea | sideb | sidec |
+-------+-------+--------------------+
| 1 | 1 | 1.4142135623730951 |
| 3 | 4 | 5 |
| 6 | 8 | 10 |
+-------+-------+--------------------+
二、mysql client
以前的Control+C命令,如果有一条正在执行的命令,就会打断它;如果没有,则会退出客户端。现在这个命令仍然会打断正在执行的命令,区别在于,在没有命令执行的时候,不再会直接退出了,而是取消任何部分输入行。
三、主存储线程改进(Master dump thread improvements)
主存储线程被重构了,进而能够减少锁竞争的情况,提升主线程的吞吐量。在MySQL 5.7.2之前,当存储线程读取一个事件的任何时候,都会在 binary log 上加一个锁。而在MySQL 5.7.2之后,只会在读取最后一个成功写入事件的位置的时候,加锁。这意味着,多个存储线程可以并发读取;而且当客户端在读取binary log的时候,存储线程也能读取得到。
四、全球化的改进(Globalization improvements)
从MySQL 5.7.4开始,引进了 gb18030 字符集,用来支持中国标准的GB18030字符集