-- یک‌بار روی دیتابیس زنده (مثلاً kh_goldarvin) در Navicat اجرا شود. -- سفارش / کیف / مشتری را پاک نمی‌کند؛ فقط لاگ ورودی مانده و سند. -- بعد از اجرا دوباره دامپ بگیر؛ حجم باید از حدود ۲۳۰MB به حدود ۱۰–۲۰MB برسد. -- ایندکس برای حذف سریع SET @db = DATABASE(); SET @sql = IF( (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'pargar_sync_logs' AND INDEX_NAME = 'pargar_sync_logs_type_status_index') = 0 AND (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'pargar_sync_logs') > 0, 'ALTER TABLE `pargar_sync_logs` ADD INDEX `pargar_sync_logs_type_status_index` (`type`, `sync_status`)', 'SELECT ''skip pargar_sync_logs_type_status_index'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- نگه داشتن ۲۰۰۰ سند ورودی تازه DELETE FROM `pargar_sync_logs` WHERE `type` = 'document' AND `sync_status` = 'success' AND `id` <= ( SELECT `cutoff` FROM ( SELECT `id` AS `cutoff` FROM `pargar_sync_logs` WHERE `type` = 'document' AND `sync_status` = 'success' ORDER BY `id` DESC LIMIT 1 OFFSET 2000 ) AS `keep` ); -- نگه داشتن ۲۰۰۰ مانده تازه DELETE FROM `pargar_sync_logs` WHERE `type` = 'mande' AND `sync_status` = 'success' AND `id` <= ( SELECT `cutoff` FROM ( SELECT `id` AS `cutoff` FROM `pargar_sync_logs` WHERE `type` = 'mande' AND `sync_status` = 'success' ORDER BY `id` DESC LIMIT 1 OFFSET 2000 ) AS `keep` ); -- جایگزین: مایگریشن 2026_09_03_000002 (تریگر INSERT + prune یک‌بار روی migrate). -- EVENT ساعتی دیگر لازم نیست.