Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
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 b...
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.

  1. <?php
  2. /**
  3.  * DataBaseService
  4.  *
  5.  * Utilizado pra dar manutenção no banco de dados
  6.  * @package service
  7.  * @author Ricardo Câmara (camaramachado@gmail.com)
  8.  * @version 1.0 
  9.  */
  10. class DataBaseService
  11. {   
  12.   
  13.     /**
  14.      * @method vacuum
  15.      * Roda o comando VACUUM em bancos de dados como PostgreSQL para limpar e otimizar a base de dados. 
  16.      * Ele remove dados "mortos" (linhas que foram deletadas ou atualizadas), 
  17.      * liberando espaço e melhorando a eficiência do armazenamento. 
  18.      * Isso também ajuda a evitar inchaço (bloat) e a garantir que o desempenho de consultas e operações seja otimizado.
  19.      * @param $param['conector'] array nome do conector da base de dados
  20.      * @returns void 
  21.      * 
  22.      * Comando Cron: /usr/local/bin/php /home/servidor/public_html/aplicacao/cmd.php "class=DataBaseService&method=vacuum&conector=banco_dados&static=1"
  23.      */
  24.     public static function vacuum(array $param): void
  25.     {
  26.         $conector $param['conector']; 
  27.         
  28.         //checa se existe o arquivo do conector 
  29.         if(!is_file("app/config/{$conector}.php"))
  30.         {
  31.             throw new Exception('Conector não encontrado!');
  32.         }
  33.         $conn TTransaction:: openFake($conector);
  34.         TTransaction::close(); //O VACUUM deve sempre rodar fora de um bloco de transação.
  35.         
  36.         $conn->exec('VACUUM;');
  37.         
  38.         //print "JOB " . basename(__FILE__) . " executou com sucesso \n";
  39.     }
  40.     
  41.     
  42.     
  43.     /**
  44.      * @method analyze
  45.      * Esse comando coleta estatísticas sobre todas as tabelas do banco de dados, 
  46.      * o que ajuda o otimizador de consultas a tomar decisões mais eficientes com base nas distribuições de dados.
  47.      * @param $param['conector'] array nome do conector da base de dados
  48.      * @returns void 
  49.      * 
  50.      * Comando Cron: /usr/local/bin/php /home/servidor/public_html/aplicacao/cmd.php "class=DataBaseService&method=analyze&conector=banco_dados&static=1"
  51.      */
  52.     public static function analyze(array $param): void
  53.     {
  54.         $conector $param['conector']; 
  55.         
  56.         //checa se existe o arquivo do conector 
  57.         if(!is_file("app/config/{$conector}.php"))
  58.         {
  59.             throw new Exception('Conector não encontrado!');
  60.         }
  61.         $conn TTransaction:: openFake($conector);
  62.         TDatabase::execute($conn"ANALYZE;");
  63.         
  64.         TTransaction::close();
  65.         
  66.         //print "JOB " . basename(__FILE__) . " executou com sucesso \n";
  67.     }
  68.     
  69. }
  70. ?>

Editado 17/10/2024 (há 1 mês) - Clique para ver alterações

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (0)