Мое приложение использует базу данных MariaDB, которую я пытаюсь сохранить изолированной, но один конкретный пользователь сразу же отправил жалобу в базу данных и через 6 недель начал жаловаться на то, что один из их запросов замедлился с 5 минут (что я считаю плохим)достаточно) до более чем 120 минут.
С тех пор сегодня это иногда было так же быстро, как обычно, иногда снова замедлялось.
Это их запрос:
SELECT MAX(last_updated) FROM data_points;
Это таблица:
CREATE TABLE data_points (
seriesId INT UNSIGNED NOT NULL,
modifiedDate DATE NOT NULL,
valueDate DATE NOT NULL,
value DOUBLE NOT NULL,
created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
ON UPDATE CURRENT_TIMESTAMP,
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
CONSTRAINT pk_data PRIMARY KEY (seriesId, modifiedDate, valueDate),
KEY ix_data_modifieddate (modifiedDate),
KEY ix_data_id (id),
CONSTRAINT fk_data_seriesid FOREIGN KEY (seriesId)
REFERENCES series(id)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci
MAX_ROWS=222111000;
и это ОБЪЯСНЕНИЕ:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE data_points ALL NULL NULL NULL NULL 224166191
Таблица содержит около 250 миллионов строк и растет относительно быстро.
Я могу заставить пользователя сделать что-то более разумное, но в краткосрочной перспективе я хочу понять, почему длительность запроса сходит с ума сегодня после 6 недельспокойный.Я приму первый ответ, который может это объяснить.