Sumário

1 Conceito

A Redução de Base tem por objetivo reduzir o espaço ocupado em disco utilizado pela base de dados, removendo todos os registros de movimentação anteriores a uma determinada data de expurgo informada. O processo de expurgo é aplicado sobre as tabelas fiscais, tabelas de estoques, tabelas financeiras (com exceção das contas a receber pendentes, das quais não serão removidas) e tabelas diversas.

Esse processo visa o aumento da performance e desempenho do sistema.


2 Restrições 

O procedimento de Redução de Base está disponível apenas para o sistema operacional Linux.


3 Pré-requisito  

Para iniciar a Redução de Base no sistema, será necessário solicitar a chave de acesso com a equipe de P&D da Linx informando o CNPJ da empresa e a data em que será realizada a redução de base. 



4 Procedimentos Pré-Redução

Para que a Redução de Base ocorra de forma efetiva e segura, antes de iniciar o procedimento será necessário:

  • Encerrar todas as conexões ativas com a base de dados e finalizar todos os processos ativos como a sincronia, o processador de lotes, o concentrador e demais integrações de terceiros, por exemplo;
  • Bloquear o acesso a base de dados em todas as estações com exceção da estação onde será realizada a redução;
  • Realizar uma cópia de segurança (backup/dump) da base de dados. Esta será a única forma de recuperar os dados caso ocorra algum imprevisto no processo de redução;
  • Criar uma nova base de dados e restaurar a cópia de segurança nela, utilizando a mesma apenas para consultas. 

4.1 Procedimentos

Após cumpridas as premissas do tópico anterior, execute as etapas a seguir:

  • Iniciar o processo de redução de dados pelo comando: as_manutencao --data-purge;
  • Informar o nome do usuário (somente super usuários do sistema tem permissão de acesso a rotina) e senha do usuário, a chave de acesso solicitada previamente a Linx e a data de expurgo (a data deve ser posterior a data do último expurgo realizado e superior a 90 dias) que será usada como referência para exclusão dos dados;
  • Opcionalmente será solicitada uma confirmação para registrar um inventário de estoque dos produtos;
  • Confirmar o processo e aguardar a conclusão.

Abaixo um print de exemplo:


Ao iniciar, a rotina primeiro irá procurar as tabelas que não foram criadas pela manutenção do sistema, e as mesmas serão excluídas sem confirmação. Depois o inventário de estoque de produtos é registrado na tabela lancto utilizando a data de expurgo, caso o usuário tenha confirmado o registro do mesmo. Lembrando que nenhum registro é gerado na tabela lancto_flow, pois esse inventário não pode ser sincronizado para as demais empresas da rede.

Após o registro do inventário, a rotina percorre uma lista de tabelas, onde será criada uma nova tabela apenas com os registros que permanecerão de acordo com a data de expurgo informada, em seguida a tabela original é excluída e a tabela recém criada é renomeada para o nome da tabela original, é executada uma manutenção apenas na tabela processada, para redefinir os atributos das colunas, e recriar a chave primária, os indices secundários e as triggers.

Essa lista de tabelas está agrupada em blocos, ou seja, as tabela fiscais (cupom, reducao_z, nota_fiscal, nfe...) compõem o primeiro bloco, depois as tabelas de estoque (lancto, estoque_produto, estoque_valor...), em seguida as tabelas do financeiro (movto, caixa, boleto, cheque...) e por último as tabelas diversas (orçamento, pedido_compra, comanda_historico, usuario_log...). Em cada bloco há tabelas de referência também chamadas de pais e tabelas dependentes também chamadas de filhas porque tem dependência de uma tabela pai, devido a ausência de um campo de data.

Exemplo de expurgo da tabela cupom (tabela pai):

>> CREATE TABLE cupom_purge AS SELECT * FROM cupom WHERE data_movto>='yyyy-mm-dd';

>> DROP TABLE cupom CASCADE;

>> ALTER TABLE cupom_purge RENAME TO cupom;

Exemplo de expurgo da tabela cupom_produto (tabela filha):

>> CREATE TABLE cupom_produto_purge AS SELECT DISTINCT c.* FROM cupom_produto c JOIN cupom p ON (c.cupom=p.grid);

>> DROP TABLE cupom_produto CASCADE;

>> ALTER TABLE cupom_produto_purge RENAME TO cupom_produto;

Todas as tabelas utilizarão a data de expurgo informada como referência, com exceção das tabelas nfe_xml e nfe_danfe onde vão permanecer apenas os registros dos últimos 180 dias (6 meses) se a data de expurgo for igual ou superior a 180 dias, caso contrário essas tabelas também utilizarão a data de expurgo como referência.

O commit ocorre ao processar cada tabela, e a evolução do processo é gravado na tabela data_purge que também registra a data de expurgo, a data/hora de início e término do processo, o tamanho inicial e final ocupado pela base de dados, o usuário e a estação onde está sendo executada a redução. Caso ocorra algum erro durante o processo, será apresentada uma mensagem de erro e a rotina é encerrada para ajuste do problema, ao reiniciar o processo a rotina inicia do ponto em que foi encerrada.

Após processar todas as tabelas é executada uma manutenção geral na base de dados. Para maiores detalhes o arquivo de log as_datapurge.log deve ser consultado.


4.2 Procedimentos Pós Redução

Após concluído o procedimento de Redução de Base, é necessário liberar o acesso à base de dados em todas as demais estações. De forma opcional, antes de reiniciar a sincronia, as caixas de e-mail da sincronia ou as pastas de sincronia do FTP podem ser limpas, agilizando dessa forma, o processamento da mesma.

Após concluídos as etapas anteriores, reinicie os processos de sincronia, processador de lotes, concentrador e demais integrações de terceiros.


5 Validações e Conferências

É possível realizar conferências entre a base expurgada e a base restaurada emitindo os seguintes relatórios:

  • Gerencial/ Estoque > Relatórios > Posições de Estoque > Posição de Estoque
  • Gerencial/ Financeiro > Relatórios > Contas a Receber > Extrato de Contas a Receber
  • Gerencial/ Financeiro > Relatórios > Contas a Receber > Extrato de Notas e Faturas
  • Gerencial/ Financeiro > Relatórios > Controles Bancários > Gerência de cheque troco
  • Gerencial/ Financeiro > Relatórios > Controles Bancários > Posição geral de cheques

Poderá ser necessário a criação e adição de motivos de acerto de saldo, já que o sistema irá excluir todas as movimentações das contas. Isso deve ser realizado pelo cliente pois não há como o sistema gerar isso de forma automática. 

As contas a receber pendentes que serão mantidas na base de dados, não incluem cartões (crédito e débito).


6 Redução aplicada em Base Exemplo

As informações contidas a seguir foram coletadas a partir de uma base exemplo e servem para consulta acerca dos dados de base e tempos de expurgos:

  • Base com registros de movimentação desde 2005;
  • Tamanho inicial ocupado pela base de dados 743 GB;
  • Data base de expurgo utilizada 01/01/2016;
  • Tamanho final ocupado pela base de dados 275 GB;
  • Tempo de processamento do expurgo 6 horas e 53 minutos;

O tempo para conclusão do processo de redução depende basicamente do tamanho da base e da performance do processador e do disco rígido do servidor. Com base nisso não é possível estimar um tempo aproximado para conclusão do processo e a recomendação é que a redução seja executada no fim de semana.