AllInfo
Main: Info Blog Temp Mail


wrk 2025-01-29 12-27-13

  mariadb: Создание шедулера для автоматической подрезки записей (заготовка не проверялась)
 

-- Создание таблицы для логирования операций, если она еще не существует
CREATE TABLE IF NOT EXISTS operation_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    operation_time DATETIME NOT NULL,
    status VARCHAR(50) NOT NULL
);

-- Создание события для автоматической подрезки записей
DELIMITER //

CREATE EVENT daily_cleanup
ON SCHEDULE EVERY 1 DAY
STARTS '2025-01-30 01:25:00'
DO
BEGIN
    -- Переменные для управления циклом
    DECLARE rows_affected INT DEFAULT 1; -- Инициализация для входа в цикл
    DECLARE batch_size INT DEFAULT 1000; -- Размер порции для удаления

    -- Цикл удаления записей
    WHILE rows_affected > 0 DO
        -- Удаление записей старше 24 часов (порциями)
        DELETE FROM protokol
        WHERE created_at < NOW() - INTERVAL 1 DAY
        LIMIT batch_size;

        -- Получение количества удаленных строк
        SET rows_affected = ROW_COUNT();

        -- Регистрация статуса операции
        INSERT INTO operation_log (operation_time, status)
        VALUES (NOW(), CONCAT(rows_affected, ' записей удалено'));
        
        -- Задержка между итерациями (при необходимости)
        DO SLEEP(1); -- Задержка в 1 секунду (можно настроить)
    END WHILE;

    -- Оптимизация таблицы после завершения удаления (при необходимости)
    OPTIMIZE TABLE protokol;
END;
//

DELIMITER ;



Объяснение кода
Создание таблицы operation_log: Проверяется существование таблицы для логирования операций. Если таблица не существует, она будет создана.
Создание события daily_cleanup: Событие настроено на выполнение ежедневно в 1:25.
Цикл удаления: Внутри события используется цикл WHILE, который продолжает удалять записи порциями по 1000 до тех пор, пока есть записи для удаления.
Регистрация статуса: После каждой итерации количество удаленных записей записывается в таблицу operation_log.
Оптимизация таблицы: После завершения удаления выполняется оптимизация таблицы protokol.

2025-01-29_13-09-47


3.15.177.45 / 2025-02-05_06-57-29 UTC.