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 da suíte Aranda. Você pode cancelar os Serviços de Informação da Internet (IIS) por causa disso.

    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