Ho questa procedura:
che viene eseguita secondo lo scheduling:codice:CREATE PROCEDURE optimize_tables() BEGIN UPDATE configs SET value = "1" WHERE name = "db_maintenance"; set @a=null,@c=null,@b=concat("show tables where",ifnull(concat("`Tables_in_",database(),"` like '",@c,"' and"),'')," (@a:=concat_ws('`,`',@a, `Tables_in_",database(),"`))"); Prepare `bd` from @b; EXECUTE `bd`; DEALLOCATE PREPARE `bd`; set @a:=concat('optimize table `',@a,'`'); PREPARE `sql` FROM @a; EXECUTE `sql`; DEALLOCATE PREPARE `sql`; set @a=null,@b=null,@c=null; UPDATE configs SET `value` = "0" WHERE name = "db_maintenance"; UPDATE configs SET `value` = NOW() WHERE name = "last_optimization"; END$$ DELIMITER ;
codice:CREATE EVENT optimizeDBEvent ON SCHEDULE EVERY 1 WEEK DO CALL optimize_tables();
solo che, quando la eseguo inserisco nella tabella configs il campo maintenance a 1 e il sito diventa "out of service" per qualche minuto.
Posso evitare di metterlo down e fare comunque l'ottimizzazione?

Rispondi quotando