1、10.1中默认包含Galera
2、可以对表、表空间、日志进行加密
需要安装file_key_management 插件
|
MariaDB > install plugin file_key_management soname 'file_key_management.so'; |
未安装加密插件的slave可以正确的复制加密的主
使用mysqlbinlog工具无法查看加密后的binlog
|
# The rest of the binlog is encrypted! ERROR: Error in Log_event::read_log_event(): 'Found invalid event in binary log', data_len: 39, event_type: 154 ERROR: Could not read entry at offset 285: Error in log format or read error. |
3、innodb/xtradb页压缩
区别于row_format=compressed,在缓存中会同时存在压缩页与非压缩页;新的页压缩功能只有在写入文件系统前进行压缩。
需要配置innodb-file-format=Barracuda 、 innodb-file-per-table=1
除zlib外,还支持lz4、lzo、lzma、bzip2、snappy压缩算法,但是默认版本不包含,需要先安装上述压缩算法后编译mariadb才能生效。
安装lzo后编译时能识别出该算法,但是编译报错。
但是实际测试page_compressed=1表数据文件并没有压缩,row_format=compressed可以正常压缩
4、复制:
基于domain_id复制过滤器
必须在MASTER_USE_GTID不为no的前提下使用,并且不能同时设置DO_DOMAIN_IDS 和 IGNORE_DOMAIN_IDS,只能选一个。例:
|
MariaDB [(none)]> CHANGE MASTER TO DO_DOMAIN_IDS=(1,2),MASTER_USE_GTID=current_pos; Query OK, 0 rows affected (0.16 sec) |
乐观模式并行复制
增强的半同步复制,收到备机响应后提交事务
新增rpl_semi_sync_master_wait_point配置项:可配置为AFTER_SYNC或AFTER_COMMIT。
row模式下slave上的trigger可以生效
新增slave_run_triggers_for_rbr配置项,使row模式下的slave可以触发slave上独有的trigger。
增强dump线程,多个slave可以更快的并发读取binlog
在特定的并行场景下事务的commit立即完成,避免在很多事务锁冲突时降低吞吐量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
MariaDB [lzk]> create table a (a int primary key,b int); Query OK, 0 rows affected (0.34 sec) MariaDB [lzk]> insert into a select 1,1; Query OK, 1 row affected (1 min 0.07 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [lzk]> insert into a select 2,1; Query OK, 1 row affected (0.68 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [lzk]> insert into a select 3,1; Query OK, 1 row affected (0.67 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [lzk]> insert into a select 4,1; Query OK, 1 row affected (0.67 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [lzk]> insert into a select 5,1; Query OK, 1 row affected (0.67 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [lzk]> set global binlog_commit_wait_count=10; Query OK, 0 rows affected (0.02 sec) MariaDB [lzk]> set global binlog_commit_wait_usec=60000000; Query OK, 0 rows affected (0.00 sec) MariaDB [lzk]> delete from a where a =1; Query OK, 1 row affected (4.05 sec)—在会话2执行相同语句,则会话1会提前提交。 MariaDB [lzk]> delete from a where a =2; Query OK, 1 row affected (1 min 0.06 sec)—未发生冲突,则等满binlog_commit_wait_usec时间。 |
RESET MASTER增加TO关键字
指定TO后,以指定的数字作为第一个binlog文件
|
MariaDB [lzk]> reset master to 4; [rdb7@redhat64-26 binlog]$ ls /home/rdb7/data/binlog mysql-bin.000004 mysql-bin.index |
修复很多复制bug
5、增加默认角色
可以为用户指定默认角色:SET DEFAULT ROLE { role | NONE } [ FOR user@host ]
mysql.user表中增加default_role字段
6、优化
优化某些场景的ORDER BY
Always uses “range” and (not full “index” scan) when it switches to an index to satisfy ORDER BY … LIMIT
实际测试执行计划与mariadb10.0.12完全一致,不知道什么场景下会优化为range。
临时表不再创建frm文件
MAX_STATEMENT_TIME可以用于中断超过该时长的长查询
可以设置全局、会话、用户的最长执行时间。可以中断任何语句(除存储过程)。MySQL5.7也有类似功能,只能中断SELECT语句。
还可以单独对语句进行设置:
|
MariaDB [lzk]> SET STATEMENT max_statement_time=0.000001 FOR SELECT * FROM a ORDER BY a; ERROR 1969 (70100): Query execution was interrupted (max_statement_time exceeded) |
UNION ALL不再使用临时表
10.1.12:
10.0.12:
提高在POWER8上60%的吞吐量
更少调用malloc(),使简单查询更快
自动发现performace schema表,performace schema表不再使用.frm文件
[rdb7@redhat64-26 ~]$ ls /home/rdb7/data/data/performance_schema/
db.opt
并且在系统初始化脚本中已无创建performance_schema的sql语句。
改善xid缓存可伸缩性(通过使用 lock-free hash)
7、一些GIS特性
8、语法:
全面支持IF EXISTS,IF NOT EXISTS,OR REPLACE
可以在存储过程之外使用混合语句
可以在存储过程外使用复合语句。
仅支持BEGIN, IF, CASE, LOOP, WHILE, REPEAT语法。且begin需要写为begin not atomic区别于原来用户开启事务的begin语法。
慢查询日志里会记录update或delete影响的行数
在慢查询日志中增加了Rows_affected项:
[rdb7@redhat64-26 data]$ mysqldumpslow redhat64-26-slow.log
Reading mysql slow query log from redhat64-26-slow.log
Count: 2 Time=0.09s (0s) Lock=0.00s (0s) Rows_sent=0.0 (0), Rows_examined=0.0 (0), Rows_affected=1.0 (2), root[root]@localhost
insert into a select N,N
Count: 1 Time=0.09s (0s) Lock=0.00s (0s) Rows_sent=0.0 (0), Rows_examined=2.0 (2), Rows_affected=2.0 (2), root[root]@localhost
delete from a
9、innodb/xtradb:
支持最大64K页
合入Facebook/Kakao碎片整理patch,可以使用optimize table对innodb表空间碎片整理
可以设置innodb表必须包含主键
10、修改部分参数变量
11、增加了几个密码插件
12、修复一些安全问题