Имеется такая таблица, в ней к вечеру скапливается около 1 мл записей, таблица работает активно на чтение, запись и обновления, а так же в течении дня ещё делаются удаления где возникают блокировки до 0.2 секунд за 1 удаление...
Сначала удалял обычным DELETE запросом с указанием ключа status и date , потом попробовал через цикл так как на date не стоит индекс, так как это поле используется только при удалении.
Время загрузки: 0.26188206672668 - Скорость: 0.262 мс.
DELETE FROM `tb_visits` WHERE `id` = '605242' LIMIT 1
Думаю перенести всё в Redis и делать переборку по ключу, та как SELECTы могут быть такими
SELECT * FROM `tb_visits` WHERE `idad` = '338236' AND `status` = '0' LIMIT 127
SELECT `id` FROM `tb_visits` WHERE `idad` = '416' AND (`idus` = '1481066' OR `ip` = INET_ATON('185.124.154.186')) LIMIT 1
Стоит ли это делать или можно как то решить вопрос по другому ?
И ещё, по этому же принципу на сайте ещё десяток таких таблиц но в них не набирается более 100т записей за сутки.
CREATE TABLE `tb_visits` (
`id` int(11) UNSIGNED NOT NULL,
`idad` int(11) UNSIGNED NOT NULL,
`idus` int(11) UNSIGNED NOT NULL,
`ip` int(10) UNSIGNED NOT NULL,
`date` int(10) UNSIGNED NOT NULL,
`status` enum('0','1') NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8 COMMENT='Запись визитов';
INSERT INTO `tb_visits` (`id`, `idad`, `idus`, `ip`, `date`, `status`) VALUES (1016695, 336347, 1488770, 630656028, 1507867665, '1');
ALTER TABLE `tb_visits`
ADD PRIMARY KEY (`id`),
ADD KEY `status` (`status`),
ADD KEY `idad` (`idad`),
ADD KEY `idus` (`idus`),
ADD KEY `ip` (`ip`);