前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MariaDB 11.4 中的变化和改进

MariaDB 11.4 中的变化和改进

原创
作者头像
贺春旸的技术博客
发布2024-06-19 12:01:16
2190
发布2024-06-19 12:01:16
举报
文章被收录于专栏:DBA 平台和工具DBA 平台和工具

MariaDB 11.4 是最新的长期支持版本(LTS)。第一个可用版本是 11.4.2,于 2024 年 5 月 29 日发布,该分支将一直支持到 2029 年 5 月 29 日。上一个 LTS 分支是 10.11,它将支持到 2028 年 2 月 16 日。

11.4 分支包括近期短期支持版本引入的增强功能:11.0、11.1、11.2、11.3,以及之前未发布的新增强功能。

以下罗列出关键新特性

一、在线DDL变更

在早期的MariaDB版本中,当一个会话正在执行ALTER TABLE MODIFY等DDL语句修改表结构时,其他会话的DML操作如UPDATE、INSERT等将被阻塞,需要等待DDL语句执行完成后才能继续。但是,在现代版本的MariaDB中,这种情况已得到改善。 举个例子:

会话一执行,alter table sbtest1 modify pad varchar(200);

会话二执行,update sbtest1 set pad='nba' where id=10000000;

在之前的版本,会话二会被阻塞。而在新版本里,会话二的UPDATE操作不会被阻塞,可以同步执行,不必等待会话一的DDL语句完成。这个改进大大提高了MariaDB的并发能力,避免了不必要的等待,提升了数据库的整体性能。

二、InnoDB 系统表空间会在启动时通过回收未使用的空间进行缩减

InnoDB 的一个历史问题是,即使删除了系统表空间数据,磁盘空间也不会被回收。因此,如果你有一个长达数小时的疯狂事务,你可能会看到你的 ibdata* 文件显著增长,而你却永远无法缩小它们。幸运的是,现在未使用的空间会在 MariaDB 启动时被释放。

三、单表UPDATE或DELETE语句,支持半连接查询优化

子查询一直以来以性能差而著称,解决方案是用join关联查询代替子查询。在之前的版本,半连接优化仅是针对select操作进行的,可以在不改变原有SQL的情况下,通过内部的优化器,把子查询改写为join关联查询。至于update或delete操作,它们的性能仍旧很差。而在最新的版本里,单表UPDATE或DELETE语句,支持半连接查询优化。

例:explain update t1 set name='aa' where id in (select id from t2 );

四、使用 DATE 或 YEAR 函数与常数进行比较的查询现在可以使用索引

例:select create_time from t_doc where YEAR(create_time)=2015;

    select create_time from t_doc where date(create_time)='2015-01-01';

以上两个SQL,可以使用上create_time索引

五、限制二进制日志文件使用的磁盘空间

担心MariaDB binlog文件增长速度过快而撑爆磁盘空间?那么需要了解一下max_binlog_total_size参数(限制二进制日志文件使用的磁盘空间),该变量对所有二进制日志的总大小(以字节为单位)设置了上限。当达到限制时,最旧的二进制日志将被清除,直到总大小低于限制或仅保留活动日志。默认值0禁用该功能。日志空间没有限制。二进制日志会无限累积,直到磁盘空间已满。(该实现基于 Percona 的补丁)

六、FULL_NODUP是binlog_row_image系统变量的新值

它的工作原理与 FULL 类似,即所有列都包含在事件中,但占用的空间更少,IO 更少。因为省略了未被 UPDATE 语句更改的列值,但是开源闪回工具,如reverse_sql不支持它。(这是阿里巴巴的贡献)

七、ALTER TABLE IMPORT 现在更容易使用了。

在移动表空间时,不再需要运行 CREATE TABLE 和 ALTER TABLE DISCARD TABLESPACE 语句。例:

FLUSH TABLES t1 FOR EXPORT;

--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg

--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t2.frm

--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd

UNLOCK TABLES;

ALTER TABLE t2 IMPORT TABLESPACE;

以前,必须执行 CREATE TABLE 和 ALTER TABLE...DISCARD TABLESPACE,而且不能重复使用现有 .frm 文件中的准确表定义。现在直接ALTER ... IMPORT即可。

八、mariadb-dump 现在支持多线程并行备份,类似于 mydumper

使用方法

代码语言:shell
复制
Shell> mariadb-dump  -S /tmp/mysql_mariadb.sock  -uroot  -p123456 
--compact --skip-ssl --single-transaction --master-data=2 
--routines --triggers --events test -T /data/bak/ -j 12 
--log-error=dump.txt > metedata.txt

注:导出的数据格式为CSV,仅支持本地、单库并行执行。

-T参数,指定存放备份数据目录

-j参数,指定并发线程数,这里为12

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下罗列出关键新特性
    • 一、在线DDL变更
      • 二、InnoDB 系统表空间会在启动时通过回收未使用的空间进行缩减
        • 三、单表UPDATE或DELETE语句,支持半连接查询优化
          • 四、使用 DATE 或 YEAR 函数与常数进行比较的查询现在可以使用索引
            • 五、限制二进制日志文件使用的磁盘空间
              • 六、FULL_NODUP是binlog_row_image系统变量的新值
                • 七、ALTER TABLE IMPORT 现在更容易使用了。
                  • 八、mariadb-dump 现在支持多线程并行备份,类似于 mydumper
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档