@tvoyadres

Как ускорить запросы Update Mysql 25 млн. строк?

Есть таблица где хранятся просмотры страниц

CREATE TABLE `hi_hits` (
  `id` int(10) UNSIGNED NOT NULL,
  `user` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `url` varchar(255) DEFAULT NULL,
  `hits` mediumint(5) UNSIGNED NOT NULL DEFAULT 0,
  `calls` tinyint(2) UNSIGNED NOT NULL DEFAULT 0,
  `referer` varchar(255) DEFAULT NULL,
  `ip` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `date_added` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY KEY (`ip`)
PARTITIONS 100;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `hi_hits`
--
ALTER TABLE `hi_hits`
  ADD PRIMARY KEY (`id`,`ip`) USING BTREE,
  ADD KEY `url` (`url`),
  ADD KEY `date_added` (`date_added`) USING BTREE;


Периодически жутко тормозят Update, бывает до 20 секунд доходят, сама база MariaDB 10.4 находиться на SSD Samsung SM951

Может кто подскажет как выкрутиться?
  • Вопрос задан
  • 891 просмотр
Пригласить эксперта
Ответы на вопрос 2
@caballero
Программист
убедитесь что есть индексы на полях которые в условии where при апдейте
Ответ написан
Комментировать
Можно периодически проверять наличие открытых таблиц:
show open tables where In_Use > 0
Если непустой вывод, тогда эти таблицы используются в тот момент. Пока таблица заблокирована для обновления, другие запросы ждут.
Добавлено
Если используются транзакции, то они запирают таблицу на время обновления.
Также возможно, что ресурсов недостаточно на машине.
Проверить рекомендации mysqltuner.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы