RM
DataBaseService - Utilizado pra dar manutenção no banco de dados
Acabei de criar uma classe de serviço pra dar manutenção nas bases de dados da aplicação.
Seus métodos podem ser chamados diretamente pela aplicação ou agendamentos na Crontab pra rodar periodicamente em horários que o sistema não esteja sendo usado pelos usuários.
Verifique se sua base de dados suporta os comandos abaixo listados.
Método vacuum
Roda o comando VACUUM em bancos de dados como PostgreSQL para limpar e otimizar a base de dados.
Ele remove dados "mortos" (linhas que foram deletadas ou atualizadas), liberando espaço e melhorando a eficiência do armazenamento.
Isso também ajuda a evitar inchaço (bloat) e a garantir que o desempenho de consultas e operações seja otimizado.
Método analyze
Esse comando coleta estatísticas sobre todas as tabelas do banco de dados, o que ajuda o otimizador de consultas a tomar decisões mais eficientes com base nas distribuições de dados.
No agendamento da Crontab recomendo chamar primeiro o vacuum e só depois o analyze.
Seus métodos podem ser chamados diretamente pela aplicação ou agendamentos na Crontab pra rodar periodicamente em horários que o sistema não esteja sendo usado pelos usuários.
Verifique se sua base de dados suporta os comandos abaixo listados.
Método vacuum
Roda o comando VACUUM em bancos de dados como PostgreSQL para limpar e otimizar a base de dados.
Ele remove dados "mortos" (linhas que foram deletadas ou atualizadas), liberando espaço e melhorando a eficiência do armazenamento.
Isso também ajuda a evitar inchaço (bloat) e a garantir que o desempenho de consultas e operações seja otimizado.
Método analyze
Esse comando coleta estatísticas sobre todas as tabelas do banco de dados, o que ajuda o otimizador de consultas a tomar decisões mais eficientes com base nas distribuições de dados.
No agendamento da Crontab recomendo chamar primeiro o vacuum e só depois o analyze.
- <?php
- /**
- * DataBaseService
- *
- * Utilizado pra dar manutenção no banco de dados
- * @package service
- * @author Ricardo Câmara (camaramachado@gmail.com)
- * @version 1.0
- */
- class DataBaseService
- {
- /**
- * @method vacuum
- * Roda o comando VACUUM em bancos de dados como PostgreSQL para limpar e otimizar a base de dados.
- * Ele remove dados "mortos" (linhas que foram deletadas ou atualizadas),
- * liberando espaço e melhorando a eficiência do armazenamento.
- * Isso também ajuda a evitar inchaço (bloat) e a garantir que o desempenho de consultas e operações seja otimizado.
- * @param $param['conector'] array nome do conector da base de dados
- * @returns void
- *
- * Comando Cron: /usr/local/bin/php /home/servidor/public_html/aplicacao/cmd.php "class=DataBaseService&method=vacuum&conector=banco_dados&static=1"
- */
- public static function vacuum(array $param): void
- {
- $conector = $param['conector'];
- //checa se existe o arquivo do conector
- if(!is_file("app/config/{$conector}.php"))
- {
- throw new Exception('Conector não encontrado!');
- }
- $conn = TTransaction:: openFake($conector);
- TTransaction::close(); //O VACUUM deve sempre rodar fora de um bloco de transação.
- $conn->exec('VACUUM;');
- //print "JOB " . basename(__FILE__) . " executou com sucesso \n";
- }
- /**
- * @method analyze
- * Esse comando coleta estatísticas sobre todas as tabelas do banco de dados,
- * o que ajuda o otimizador de consultas a tomar decisões mais eficientes com base nas distribuições de dados.
- * @param $param['conector'] array nome do conector da base de dados
- * @returns void
- *
- * Comando Cron: /usr/local/bin/php /home/servidor/public_html/aplicacao/cmd.php "class=DataBaseService&method=analyze&conector=banco_dados&static=1"
- */
- public static function analyze(array $param): void
- {
- $conector = $param['conector'];
- //checa se existe o arquivo do conector
- if(!is_file("app/config/{$conector}.php"))
- {
- throw new Exception('Conector não encontrado!');
- }
- $conn = TTransaction:: openFake($conector);
- TDatabase::execute($conn, "ANALYZE;");
- TTransaction::close();
- //print "JOB " . basename(__FILE__) . " executou com sucesso \n";
- }
- }
- ?>
Editado 17/10/2024 (há 1 mês) - Clique para ver alterações