1.2.2 扩展和新功能

MariaDB对服务层做了大量改进,增加了很多新的特性,如果一个补丁或功能是有用的、安全的、稳定的,那么MariaDB官方就会尽一切努力在MariaDB发行版中加入它。

MariaDB最显著的功能列举如下(MySQL里没有这些功能)。

□ 集成了Galera Cluster高可用集群插件,能够保证数据不丢失。

□ 系统版本表能有效防止因误删除或误更改而导致的数据丢失,它里面存储了所有更改的历史数据,而不仅仅是当前时刻的有效数据。例如,同一行数据一秒内被更改了10次,那么系统版本表中就会保存10份不同时间的版本数据。

□ mysqlbinlog增加了闪回功能(仅支持在DML语句INSERT、DELETE、UPDATE上闪回)。

□“SQL_MODE=ORACLE”支持Oracle的PL/SQL。

□ 隐藏列将不会出现在“SELECT*”语句的结果中。

□ 动态列支持以JSON格式存储数据(注意,这里动态列的实现方式与MySQL 5.7的不一样)。

□ 半同步复制插件内置在MariaDB服务器中,并且不再以插件的方式提供。这就意味着不用再通过“INSTALL SONAME 'semisync_master'”和“INSTALL SONAME 'semisync_slave'”的方式来安装插件了。

□ 支持EXCEPT、INTERSECT语法。

□ 对CREATE OR REPLACE TABLE和CREATE OR REPLACE DATABASE语法进行了扩展。

□ DELETE语句支持数据回滚功能,可以将单个表中已删除行的结果集返回给客户端。

□ INFORMATION_SCHEMA.PROCESSLIST表中添加了一个额外的列TIME_MS,用于查看毫秒时间。

□ 支持虚拟列(函数索引)。

□ 对kill命令进行了扩展,可以指定杀死某个user用户的所有查询(例如“kill user hechunyang”)。

□ 支持基于表的组提交并行复制(注意,这里的实现方式与MySQL 5.7的不一样)。

□ 二进制日志支持压缩功能,可以通过设置log_bin_compress参数启用事件的DML/DDL语句压缩。

□ 修改表结构时可以显示执行进度。

□ 慢查询日志里增加了执行计划。