Tuesday, November 3, 2015

Rotinas de manutenção [ Reindexação & Integridade ]


Rotinas


  • Procedimentos padrões para banco de dados (Tarefa de Manutenção);


CHECK DATABASE INTEGRITY:
Executa verificação de integridade dos bancos. Durante essa task são executados os comandos DBCC CHECKCATALOG, DBCC CHECKTABLE e DBCC CHECKALLOC;


REORGANIZE INDEX:
Reordena os índices em tabelas;


UPDATE STATISTICS:
atualiza as estatísticas de consulta às tabelas;


CLEANUP HISTORY:
Remove histórico de informações do banco MSDB, responsável por gerenciar as atividades de manutenção;


REBUILD INDEX:
Dropa os índices atuais e recria novos;


  • Criar usuários específicos por aplicação e suas respectivas permissões;
Usarios: USERSYSTEM, USERAPP, USEREST


  • Gerar relatórios mensais dos bancos de dados para controle interno com foco na ProAtividade;


  • Taxa de crescimento, Taxa de acesso, Error frequentes, verificação da estatísticas entre outros;
Obs: Em ambientes críticos, envolver a equipe de T.I. interna da empresa para dar suporte os processos;



ANALISE DE INDEX SQLSERVER
avg_fragmentation_in_percent value Corrective statement
> 5% and < = 30% ALTER INDEX REORGANIZE
> 30% ALTER INDEX REBUILD WITH (ONLINE = ON)*

SELECT DB_ID() AS [Database ID];
GO

select
object_schema_name(ps.object_id) as ObjectSchema,
object_name (ps.object_id) as ObjectName,
ps.object_id ObjectId,
i.name as IndexName,
'ALTER INDEX ' + i.name + ' ON ' + object_name (ps.object_id) + ' REBUILD ;',
ps.avg_fragmentation_in_percent,
ps.page_count
from sys.dm_db_index_physical_stats(7, null, null, null, null) ps
inner join sys.indexes i
on i.object_id = ps.object_id and
 i.index_id = ps.index_id
where
avg_fragmentation_in_percent > 5 -- reorganize and rebuild
and ps.index_id > 0
order by avg_fragmentation_in_percent desc


LISTAR INDEX E INFO
SELECT
    TableName = t.name,
    IndexName = ind.name,
    IndexId = ind.index_id,
    ColumnId = ic.index_column_id,
    ColumnName = col.name,
    ind.*,
    ic.*,
    col.*,
    'ALTER INDEX ' +  ind.name + ' ON ' + t.name + ' REBUILD WITH (ONLINE=ON);',
'ALTER INDEX ' +  ind.name + ' ON ' + t.name + ' REBUILD;',
    'ALTER INDEX ALL ON'  + t.name +  ' REBUILD;'
FROM
    sys.indexes ind
INNER JOIN
    sys.index_columns ic ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN
    sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN
    sys.tables t ON ind.object_id = t.object_id
WHERE
    ind.is_primary_key = 0
    AND ind.is_unique = 0
    AND ind.is_unique_constraint = 0
    AND t.is_ms_shipped = 0
ORDER BY
    t.name, ind.name, ind.index_id, ic.index_column_id

UPDATE STATISTICAS COMPLETA
EXEC sp_updatestats;

REBUILD POR TABELA
SELECT 'ALTER INDEX ALL ON '  + TABLE_NAME +  ' REBUILD;'
FROM information_schema.tables

0 comentários:

Post a Comment