MariaDB & IONOS:提升托管性能

MariaDB Foundation 重视与赞助商的合作关系。与 IONOS 的合作使我们能够深入了解 MariaDB Server 的使用方式及其发展方向,并在许多方面全面改进 MariaDB Server。

IONOS 的故事

在 CloudFest 2023 大会上,我们最早的会议之一是与来自 IONOS 的 Stefan Erkeling 进行的。这是一次非常愉快的会议,很高兴看到 IONOS 对我们合作关系的重视程度。Stefan 在会议中表示,他们遇到了一个性能问题,需要一些建议。

会议后期,Stefan 向我介绍了 Babak Vahedipour,他是 IONOS 的工程高级副总裁。Babak 能够提供更多关于这个问题的细节。本质上,他们在单个 MariaDB Server 上有数千个客户,每个客户在该服务器上都有自己的数据库。当应用程序在 INFORMATION_SCHEMA.TABLES 或类似表上运行 SELECT 查询,而没有包含 SCHEMA_NAMEWHERE 条件时,服务器会扫描所有数据库的所有 FRM 文件。这可能是一个耗时且昂贵的操作,对他们来说是不必要的,因为应用程序只需要了解自己的表。

对于托管服务提供商来说,在其上运行的应用程序通常无法由他们修改。这需要在数据库服务器端解决。他们最初的解决方案是通过代理重写查询来解决这个问题,但 Babak 想知道是否可以通过 MariaDB 插件来代替,从而无需使用代理。他问我是否可以指导他的团队该从何处着手进行此项工作。

解决方案

遗憾的是,这个问题无法通过插件以一种简洁的方式解决。但这确实为我们提供了解决 IONOS 和其他可能遇到类似问题的托管服务提供商的思路。

我与 Monty 讨论了这个问题,并提出了几个解决方案。第一个是可以快速实现。一个系统变量,当设置后,只显示当前工作数据库的 INFORMATION_SCHEMA 表的结果,除非提供了特定数据库的 WHERE 条件,默认情况下该变量为‘off’,因此不会改变正常行为。这作为一个权宜之计,直到人们可以使用第二个解决方案。该补丁 目前正在进行代码审查,计划合入 MariaDB 11.2。我将此情况告知了 Babak,他的团队也在测试它。

第一个解决方案(INFORMATION_SCHEMA 补丁)不是一个永久、完全通用的解决方案。但是 catalogs 是。Catalogs 是一项许多类似的 MariaDB 用户都感兴趣的特性,其开发正在进行中。简而言之,这是在单个 MariaDB 服务器中按客户隔离用户和数据库的一种方式。客户只能验证自己的用户并查看自己的数据库。我们在 一篇博客文章 中更详细地讨论了这项特性。在 MariaDB Knowledge Base 中也有该特性的概述。

与第一个解决方案一样,该特性默认也是关闭的,因此不会影响任何不想使用该特性的人。这项特性目前正在开发中,IONOS 等公司将就其开发和实现提供反馈,以便我们确保它能很好地满足他们的使用场景。

由您驱动

赞助 MariaDB Foundation 是改善 MariaDB Server 持续性并帮助塑造其未来以更好地满足您需求的好方法。如果您有兴趣成为 MariaDB Foundation 的赞助商,请访问 我们的赞助页面

发布者:Andrew Hutchings

MariaDB Foundation 首席贡献官