【发布时间】:2020-08-14 13:00:33
【问题描述】:
我在 Ubuntu 18.4.4 LTS 上运行 MariaDB 10.2.31。 我经常遇到以下难题 - 尤其是在早上开始时,即我的 DEV 环境在夜间闲置时 - 而且在白天时常会遇到。
我有一张桌子(这也适用于其他桌子),大约。 15.000 行和(除其他外)VARCHAR 列上的索引,平均包含 5 到 10 个字符。
值得注意的是,包括这一列在内的大多数列都是 GENERATED ALWAYS AS (JSON_EXTRACT(....)) STORED,因为我 99% 的数据来自 REST API 作为 JSON 编码的字符串(方便我将它们存储在一个列中并提取其他所有内容)。
当对该列 WHERE colname LIKE 'text%' 运行查询时,我发现查询结果持续时间为 0.006 秒。好的。当我查询EXPLAINed 时,我可以看到正在使用该索引。
然而,正如我所提到的,当我早上开始时,这需要更长的时间(今天早上 14 秒)。我知道查询缓存,我在关闭查询缓存的情况下尝试了这个(通过SET GLOBAL query_cache_type=OFF 和RESET QUERY CACHE)。在这种情况下,我得到大约一致的时间。 0.3 秒 - 符合预期。
那么,您建议我应该研究什么?我的数据库在睡觉吗?有这种事吗?
【问题讨论】:
-
这可能是dba.stackexchange.com 的问题,但要从某个地方开始:您的数据库服务器是否在一夜之间做某事/是否有人在访问它(例如备份、其余 api,...)?这包括该服务器上的所有数据库。
-
我确实有一个守护进程正在运行,它不断地获取和插入提到的 JSON 数据(并进行其他清理工作)。这意味着即使没有人使用前端,数据库也应始终处于使用状态。
标签: mysql indexing mariadb query-cache