PT
Español
English
Português
    Manutenção de banco de dados

    A manutenção de um banco de dados sempre como o da Aranda FIELDE SERVICE AFLS, é muito importante para manter todas as informações atualizadas e em um nível ideal. Estas operações de manutenção podem ser efectuadas duas vezes por mês. Também é possível modificar a frequência de manutenção, levando em consideração a atividade que o banco de dados recebe em produção e o volume de dados que ele manipula. Recomenda-se que essa manutenção seja realizada duas vezes por mês, a menos que o nível de transações seja muito alto.

    REGISTRO DE TRANSAÇÕES:

    • Especifique um limite de crescimento do arquivo de log.
    • Especifique uma taxa de crescimento do arquivo de log que impeça que uma operação de expansão do arquivo de log exceda 2 segundos. Normalmente, você pode usar entre 30 Mb e 60 Mb.
    • Se você estiver usando o modelo de recuperação completa, defina uma estratégia de recuperação e backup com base no log de transações, para facilitar a reutilização do espaço fornecido pelos arquivos de log.
    • Se você usar o modelo de recuperação simples, lembre-se de que o log de transações crescerá lentamente, mas isso poderá afetar a estratégia de recuperação definida para o banco de dados.

    DESFRAGMENTAÇÃO DE ÍNDICES:

    As tarefas de desfragmentação de índice ajudam a melhorar o desempenho do banco de dados, melhorando o acesso aos dados no disco; É aconselhável executar essas tarefas periodicamente para garantir o bom funcionamento do banco de dados. Essas tarefas ajudam os planos de execução a serem compilados com as estatísticas mais recentes do banco de dados.


    Nota: certifique-se de medir o impacto das operações de script de terceiros em seus bancos de dados. Sob nenhuma circunstância a Aranda SOFTWARE será responsabilizada por qualquer dano causado às informações ou ao esquema do banco de dados após a execução de scripts que não tenham sido referenciados pelo pessoal autorizado da Aranda SOFTWARE.


    Se você quiser desfragmentar índices e atualizar estatísticas, faça o seguinte:

    1. Certifique-se de que nenhum usuário esteja editando, consultando ou inserindo dados nas ferramentas do pacote Aranda. Você pode interromper o IIS (Serviços de Informações da Internet) para isso.

    2. Pare os serviços do Aranda Suite no servidor de aplicativos.

    3. Execute o script (Script de Desfragmentação de Índice e Atualização de Estatísticas). Não é recomendável atualizar as estatísticas com muita frequência, pois isso invalida os planos de execução armazenados no cache do servidor. Por esse motivo, no script você encontrará o parâmetro @statistics com o valor ‘OFF’. Quando quiser atualizar as estatísticas, altere o parâmetro mencionado para o valor ‘ON’.

    4. Reinicie todos os serviços do Aranda Suite e do Internet Information Services (IIS).


    --Script desfragmentación de índices y actualización de estadísticas 
    use DATABASE --Nombre de la base de datos
    declare @statistics nvarchar(3) = 'OFF'; --Modifique este valor a 'ON' para actualizar estadísticas.
    declare @sentence nvarchar(128),
    @initdate datetime,
    @inaldate datetime;
    declare cur_indices cursor for with index_fragment (object_id, index_id, avg_fragmentation_in_percent) as (
      SELECT
        object_id,
        index_id,
        avg_fragmentation_in_percent
      FROM
        sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, 'LIMITED')
      WHERE
        (
          (avg_fragmentation_in_percent > 15)
          OR (avg_page_space_used_in_percent < 60)
        )
        AND page_count > 5
        AND index_id NOT IN(0)
        AND object_id NOT IN(
          	OBJECT_ID('AFLS_APP_LOG'),
          	OBJECT_ID('AFLS_ASSIGNMENT_ENGINE_LOG'),
    OBJECT_ID('AFLS_MAPS_API_USED_LOG'),
          	OBJECT_ID('AFLS_LOG_CRUD_ADDITIONAL_FIELD'),
    	OBJECT_ID('AFW_AUDIT'),
    	OBJECT_ID('AFW_MAIL_HISTORY'),
    	OBJECT_ID('AFW_WORKER_LOG')
        )
    )
    SELECT
      'ALTER INDEX ' + ind.[name] + ' ON ' + sc.[name] + '.' + OBJECT_NAME(t.object_id) + ' REBUILD' sentence
    FROM
      index_fragment t
      INNER JOIN sys.indexes ind ON t.object_id = ind.object_id
      AND t.index_id = ind.index_id
      INNER JOIN sys.objects ob ON t.object_id = ob.object_id
      INNER JOIN sys.schemas sc ON sc.schema_id = ob.schema_id
    Union
    
    select
      'update statistics ' + OBJECT_NAME(object_id)
    from
      index_fragment
    where
      @statistics = 'ON' open cur_indices fetch cur_indices into @sentence while(@@FETCH_STATUS = 0) begin
    set
      @initdate = GETDATE();
    exec sp_executesql @sentence;
    print @sentence + ' tiempo de ejecución: ' + convert(
      varchar(10),
      datediff(millisecond, @initdate, GETDATE())
    );
    fetch cur_indices into @sentence;
    end close cur_indices;
    deallocate cur_indices;
    declare cur_indices cursor for with index_fragment (object_id, index_id, avg_fragmentation_in_percent) as (
      SELECT
        object_id,
        index_id,
        avg_fragmentation_in_percent
      FROM
        sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, 'LIMITED')
      WHERE
        (
          (
            avg_fragmentation_in_percent > 10
            AND avg_fragmentation_in_percent < 15
          )
          OR (
            avg_page_space_used_in_percent < 75
            AND avg_page_space_used_in_percent > 60
          )
        )
        AND page_count > 5
       AND dm_db_index_physical_stats.index_id NOT IN (0)
       AND object_id NOT IN(
          OBJECT_ID('AFLS_APP_LOG'),
          	OBJECT_ID('AFLS_ASSIGNMENT_ENGINE_LOG'),
    OBJECT_ID('AFLS_MAPS_API_USED_LOG'),
          	OBJECT_ID('AFLS_LOG_CRUD_ADDITIONAL_FIELD'),
    	OBJECT_ID('AFW_AUDIT'),
    	OBJECT_ID('AFW_MAIL_HISTORY'),
    	OBJECT_ID('AFW_WORKER_LOG')
        )
    )
    SELECT
      'ALTER INDEX ' + ind.[name] + ' ON ' + sc.[name] + '.' + OBJECT_NAME(t.object_id) + ' REORGANIZE' sentence
    FROM
      index_fragment t
      INNER JOIN sys.indexes ind ON t.object_id = ind.object_id
      AND t.index_id = ind.index_id
      INNER JOIN sys.objects ob ON t.object_id = ob.object_id
      INNER JOIN sys.schemas sc ON sc.schema_id = ob.schema_id
    union
    select
      'update statistics ' + OBJECT_NAME(object_id)
    from
      index_fragment
    where
      @statistics = 'ON' open cur_indices fetch cur_indices into @sentence while(@@FETCH_STATUS = 0) begin
    set
      @initdate = GETDATE();
    exec sp_executesql @sentence;
    print @sentence + ' tiempo de ejecución: ' + convert(
      varchar(10),
      datediff(millisecond, @initdate, GETDATE())
    );
    fetch cur_indices into @sentence;
    end close cur_indices;
    deallocate cur_indices;
    GO