MariaDB 11.1.0 预览版现已推出


MariaDB 11.1.0 预览版现已推出。值得注意的是,预览版旨在更快地将功能交到用户手中,不应用于生产。预览版中的功能可能不会全部发布为普遍可用 (GA) 版本,只有那些通过测试的功能才会合并到 MariaDB Server 11.1.1 中。

11.1 正在考虑的功能包括:

YEAR 和 DATE 的索引用法

使用 MDEV-8320 时,一些使用 DATE 或 YEAR 函数的查询会快得多,因为优化器现在可以在某些情况下使用索引。采用以下方法(从创建包含 1000 个日期的表 t3 开始)。

 create table t0(a int); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); create table t1(a int); insert into t1 select A.a + B.a* 10 from t0 A, t0 B; create table t2 (pk int primary key, a datetime, b date, key(a), key(b)); insert into t2 select A.a*10+B.a, date_add(date_add('2017-01-01', interval A.a*8 day), interval B.a hour), date_add('2017-01-01', interval A.a*7 day) from t1 A, t0 B; SELECT * FROM t2 LIMIT 3; +----+---------------------+------------+ | pk | a | b | +----+---------------------+------------+ | 0 | 2017-01-01 00:00:00 | 2017-01-01 | | 1 | 2017-01-01 01:00:00 | 2017-01-01 | | 2 | 2017-01-01 02:00:00 | 2017-01-01 | ... | 997 | 2019-03-04 07:00:00 | 2018-11-25 | | 998 | 2019-03-04 08:00:00 | 2018-11-25 | | 999 | 2019-03-04 09:00:00 | 2018-11-25 | +-----+---------------------+------------+ explain select * from t2 where date(a) <= '2017-01-01'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 type: range possible_keys: a key: a key_len: 6 ref: NULL rows: 10 Extra: Using index condition 

直到 MariaDB 11.0,优化器才会使用索引:

 explain select * from t2 where date(a) <= '2017-01-01'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 1000 Extra: Using where 

索引可以与 YEAR 和 DATE 函数一起使用,也可以与任何 >、<、>=、<= 或 = 运算符一起使用:

 explain select * from t2 where year(a) < 2017\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 type: range possible_keys: a key: a key_len: 6 ref: NULL rows: 1 Extra: Using index condition explain select * from t2 where year(a) = 2019\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t2 type: range possible_keys: a key: a key_len: 6 ref: NULL rows: 80 Extra: Using index condition 

UPDATE/DELETE 的半连接优化

MariaDB 有很多半连接优化。以前,单表 UPDATE/DELETE 语句无法利用这些,因为半连接优化是一种不能用于单表 UPDATE/DELETE 的子查询优化。现在,优化器可以自动将单表 UPDATE 和 DELETE 转换为多表 UPDATE/DELETE,从而为它们启用半连接优化。如果你在 UPDATE 或 DELETE 中使用子查询,这些语句可能会快得多(MDEV-7487 ) 例如,比较样本数据集中的这两个 EXPLAIN 结果。首先,在 MariaDB 11.1 之前:

 explain delete from partsupp where (ps_partkey, ps_suppkey) in (select p_partkey, s_suppkey from part, supplier where p_retailprice between 901 and 910 and s_nationkey in (select n_nationkey from nation where n_name='PERU'))\G *************************** 1. row *************************** id: 1 select_type: PRIMARY table: partsupp type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 700 Extra: Using where *************************** 2. row *************************** id: 2 select_type: DEPENDENT SUBQUERY table: nation type: ref possible_keys: PRIMARY,i_n_regionkey,i_n_name key: i_n_name key_len: 26 ref: const rows: 1 Extra: Using where; Using index *************************** 3. row *************************** id: 2 select_type: DEPENDENT SUBQUERY table: part type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: func rows: 1 Extra: Using where *************************** 4. row *************************** id: 2 select_type: DEPENDENT SUBQUERY table: supplier type: eq_ref possible_keys: PRIMARY,i_s_nationkey key: PRIMARY key_len: 4 ref: func rows: 1 Extra: Using where 

然后,MariaDB 11.1 EXPLAIN 的等效查询:

 explain delete from partsupp where (ps_partkey, ps_suppkey) in (select p_partkey, s_suppkey from part, supplier where p_retailprice between 901 and 910 and s_nationkey in (select n_nationkey from nation where n_name='PERU'))\G *************************** 1. row *************************** id: 1 select_type: PRIMARY table: nation type: ref possible_keys: PRIMARY,i_n_name key: i_n_name key_len: 26 ref: const rows: 1 Extra: Using where; Using index *************************** 2. row *************************** id: 1 select_type: PRIMARY table: supplier type: ref possible_keys: PRIMARY,i_s_nationkey key: i_s_nationkey key_len: 5 ref: test.nation.n_nationkey rows: 1 Extra: Using index *************************** 3. row *************************** id: 1 select_type: PRIMARY table: partsupp type: ref possible_keys: PRIMARY,i_ps_partkey,i_ps_suppkey key: i_ps_suppkey key_len: 4 ref: test.supplier.s_suppkey rows: 1 Extra: *************************** 4. row *************************** id: 1 select_type: PRIMARY table: part type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: test.partsupp.ps_partkey rows: 1 Extra: Using where 

JSON 模式验证

JSON_SCHEMA_VALID 函数已根据 JSON Schema Draft 2020 实现 ( MDEV-27128 ) 。如果给定的 json 对模式有效,则该函数返回 true,否则返回 false。

 SET @schema= '{ "properties" : { "number1":{ "maximum":10 }, "string1" : { "maxLength": 3} } }'; SELECT JSON_SCHEMA_VALID(@schema, '{ "number1":25, "string1":"ab" }'); +----------------------------------------------------------------+ | JSON_SCHEMA_VALID(@schema, '{ "number1":25, "string1":"ab" }') | +----------------------------------------------------------------+ | 0 | +----------------------------------------------------------------+ SELECT JSON_SCHEMA_VALID(@schema, '{ "number1":10, "string1":"ab" }'); +----------------------------------------------------------------+ | JSON_SCHEMA_VALID(@schema, '{ "number1":10, "string1":"ab" }') | +----------------------------------------------------------------+ | 1 | +----------------------------------------------------------------+ 

InnoDB defragmentation

InnoDB defragmentation 是一个很少使用的功能,它使 OPTIMIZE TABLE 不会像往常一样重建表,而是导致索引 B-trees 就地优化。但是,该选项使用了过多的锁定(独占锁定索引树),从未覆盖 SPATIAL INDEXes 或 FULLTEXT INDEXes,并且从未回收存储空间。由于它不是特别有用,在很多情况下不起作用,并且造成维护负担,它已被删除(MDEV-30545)。

其他特性

  • MDEV-16329 ALTER ONLINE TABLE 已在存储引擎层之上实现,模仿了自 MariaDB 10.0 以来 InnoDB 所做的工作。
  • Mariabackup 是用于执行物理在线备份的工具。它最初是 Xtrabackup 的一个分支,不支持 MariaDB 10.1 的静态数据加密。然而,文件仍然被命名为xtrabackup_*. 它们现在被命名为mariadb_backup_*( MDEV-18931 )

链接

  • 下载 MariaDB 11.1.0
  • 发行说明

相關推薦

2022-09-28

MariaDB 10.11.0 预览版现已推出。官方表示,预览版的设计是为了让用户能提早地体验版本新功能,而不建议应用于生产;并非所有预览版中的功能都会出现在 GA 版本中。v10.11 正在考虑的功能包括有: Authentication GRANT … TO PUBLI

2024-09-27

MariaDB 11.7.0 预览版现已发布。v11.7.0 引入了众多新功能,一些亮点内容包括: generate UUID 第 4 版和第 7 版的函数。 大型事务的近乎即时的二进制日志(避免复制到二进制日志中)。 在异步回滚准备好的事务时,崩溃恢复速

2022-09-21

MariaDB 基金会宣布了 MariaDB 10.9.3、MariaDB 10.8.5 和 MariaDB 10.7.6 的可用性,它们各自的短期支持系列中最新的普遍可用版本(从第一个 GA 发布日期起维护一年)。以及 10.6 长期支持系列(维护五年)中最新的稳定

2022-11-24

MariaDB 基金会宣布 MariaDB 10.11 将作为 LTS 版本提供,这意味着 10.11 系列将比短期支持的 MariaDB 10.10 系列的一年期限要长得多。 MariaDB 10.6 是之前公布的最新的 LTS,它的支持时间为 2021-07-06 至 2026-07-06。此次的 LTS 公告意味着官

2024-10-22

术,大大加快了整库表同步增量任务启动速度。 添加MariaDB的Source/Sink Connector连接器 支持MariaDB的批量读/写、实时增量读/写功能。 单机部署提供设置多同步任务并发执行 为了充分挖掘单机版机器CPU并发执行的潜力,在TIS

2022-08-24

MariaDB 10.10.1 RC 和 10.9.2 GA 现已推出。MariaDB 基金会宣布了 MariaDB 10.10.1 的可用性,这是 MariaDB 10.10 系列中的第一个候选版本,而 MariaDB 10.9.2 则是 MariaDB 10.9 系列中的第一个普遍可用的版本。这些都是短期支持系列,在 GA 后维护一

2023-02-18

MariaDB 10.11.2 现已正式推出。这是 MariaDB 10.11 系列的第一个 GA 版本,一个长期支持版本。 具体更新内容包括: Notable Items Red Hat Enterprise Linux、CentOS、Fedora、openSUSE 和 SUSE 的 Yum/DNF/Zypper 存储库在这个版本中更改为使用带有 SHA2

2024-11-01

,Alpine Linux 将在 3.21 中重新发布支持 PaX 的内核作为技术预览版。进一步的集成将在 Alpine 3.22 中进行。 OpenPaX 内核代码可通过 Edera 的 linux-openpax 仓库获取。 

2023-08-25

PHP 版本更新到 7.4.33 Apache 版本更新到 2.4.57 MySQL(MariaDB) 版本更新到 10.6.15 变更 新增 MYSQL_INTERNAL 环境变量,支持开启或关闭内置MySQL服务 持久化目录调整到 /data ,旧版更新文档 组件二进制目录调

2023-06-07

oma、 iOS 17 、watchOS 10 和 iPadOS 17 等。 macOS Sonoma 发布的是预览版,并未推送到用户侧。macOS Sonoma 主要带来一些视觉和交互体验,以及隐私功能方面的改进: 交互式小组件 用户可将小组件直接置于桌面之上,并通过访问小组

2022-08-02

新版本 —— deepin 23 Preview。 据称,即将发布的deepin 23 预览版将是跨越上游Debian社区基于根社区理念打造的一款根操作系统,是集合社区开源力量、蕴含大量创新技术的全新一代操作系统产品。在这一全新版本中,deepin将从Lin

2024-08-20

MoonBit beta 预览版比大部分主流语言更早推出现代化泛型、精准错误处理和高效迭代器等重要特性,在云计算、边缘计算、人工智能和教育等领域快速实现落地应用。Beta 预览版标志着 MoonBit 生态进入全新阶段,为用户提供更稳定

2024-07-05

Visual Studio Code 1.91 已发布,具体更新内容如下: 预览:Incoming/Outgoing changes graph - 在 Source Control 视图中可视化 incoming 和 outgoing changes。 可以通过scm.experimental.showHistoryGraph设置新的可视化功能。 Python 环境 推出

2023-08-19

续在 Impeller 的 Vulkan 后端方面取得进展,但尚未达到官方预览期所需的质量水平。计划将在今年晚些时候以稳定版本的形式进入 Android 版 Impeller 的预览期。 尽管 Android 上的 Impeller 尚未完全准备好进行预览,但 OpenGL 和 Vulkan 后