phpBB3 引發的 MySQL slow query (3) -- 新增修改方案

網路與網站相關議題和知識
回覆文章
dtchang
Site Admin
文章: 143
註冊時間: 2017-01-22, 16:54

phpBB3 引發的 MySQL slow query (3) -- 新增修改方案

文章 dtchang » 2025-08-22, 16:51

使用 MySQL 的 Event Scheduler 於每日3點清除超過1小時未活動的sessions'
Schema: phpbb
Table: phpbb_sessions

代碼: 選擇全部

DELIMITER $$

CREATE EVENT `auto_clean_phpbb_sessions`
ON SCHEDULE
    EVERY 1 DAY STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 3 HOUR)
ON COMPLETION PRESERVE
ENABLE
COMMENT '自動清理phpbb schema中超過1小時未活動的sessions'
DO
BEGIN
    DELETE FROM `phpbb`.`phpbb_sessions` 
    WHERE `session_time` < UNIX_TIMESTAMP() - 3600;
END$$

DELIMITER ;
查看 event 的相關指令

代碼: 選擇全部

-- 查看所有事件
SHOW EVENTS FROM phpbb;

-- 或者查看所有資料庫的事件
SHOW EVENTS;

-- 查看事件的詳細定義
SHOW CREATE EVENT auto_clean_phpbb_sessions;
1. 備份資料時,需備份 event
2. sessions表中的 session_time 為 long int 的 UNIX_TIMESTAMP(), 即 php time()
3. MySQL now()的資料為時間資料,不是秒數
查詢最近一小時的sessions數量(當前系統參考值: 9000)

代碼: 選擇全部

SELECT COUNT(*) FROM phpbb.phpbb_sessions 
WHERE session_time between UNIX_TIMESTAMP() - 3600 AND UNIX_TIMESTAMP()

回覆文章