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