TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

O Gerenciamento de Transação

Por:   •  24/11/2015  •  Monografia  •  1.317 Palavras (6 Páginas)  •  114 Visualizações

Página 1 de 6

3.3: Gerenciamento de Transação

O gerenciamento de transações do SQL Server é uma etapa importante para garantir operações tranquilas e para evitar erros de bloqueio

Primeiramente  você deve considerar  cuidadosamente como você gerencia relacionadas à transação Dynamic Management Objects (DMOs).Todas as exibições de gerenciamento dinâmico (DMVs) na categoria "transação relacionados" de DMOs começam com  “Sys.dm_tran_” como uma declaração de abertura. Toda instrução executada no SQL é transacional se usarmos “BEGIN TRAN / COMMIT TRAN”  você pode  agrupar essas informações e códigos como uma transação implícita.

O SQL por si só implementa vários tipos e camadas de isolamento de transação para garantir a segurança e atomicidade do sistema, ele utiliza basicamente de bloqueios e travas para mediar o acesso e impedir a interferência ou outro tipo de problema relacionado a isso no sistema.

O SQL tem todo um método de investigação para encontrar e filtrar o problema e se utiliza de algumas palavras chaves:

- Quais transações estão ativos e quais sessões são executá-los? (session_transactions, active_transactions)

- Quais transações estão fazendo mais trabalho?(database_transactions)

- Quais transações estão causando problemas de travamento/bloqueio? (bloqueios)

Sendo esses passos os mais usados para a investigar o bloqueio, o uso desse DMV’s.

 Mas à outra maneira  de investigar esses problemas á  que está cada vez mais comum é o nível de isolamento instantâneo, que foi implementado no SQL em 2005 que tem como tipo de trabalho e investigação, eliminar o “Deadelocking” usando armazenamento de versão no banco de dados TEMPDB para obter simultaniedade, ao invez de estabelecimentos de bloqueios de banco de dados.

Vamos agora dissertar um pouco sobre os scripts. Salvo indicação em contrário, todas essas consultas trabalham com SQL Server 2005, 2008 e 2008 R2, e todas exigem permissão VIEW SERVER STATE. Este script usa dois DMVs. O primeiro é sys.dm_tran_database_transactions, que é descrita no servidor SQL books online (BOL) da seguinte forma: "Retorna informações sobre transações no banco de dados".

A segunda é sys.dm_tran_session_transactions, que simplesmente: "Retorna informações de correlação para transacções associadas e sessões".

A descrição concisa para database_transactions um pouco desmente sua utilidade potencial. O script a seguir fornece uma consulta que mostra, por sessão, quais bancos de dados estão em uso por uma transação aberta por essa sessão, se a transação foi atualizado para leitura-gravação em qualquer um dos bancos de dados (por padrão a maioria das operações são somente leitura), quando a transação atualizado para leitura e gravação para esse banco de dados, como muitos registros de log escritos e quantos bytes foram usados por esses registros de log:

Selecione st.session_id, DB_NAME(dt.database_id) AS database_name, caso quando dt.database_transaction_begin_time é nula então 'read-only'

ELSE 'leitura-gravação' FINAL AS transaction_state, dt.database_transaction_begin_time como read_write_start_time, dt.database_transaction_log_record_count, dt.database_transaction_log_bytes_usedFROM sys.dm_tran_session_transactions como st INNER JOIN sys.dm_tran_database_transactions como dt

EM st.transaction_id = dt.transaction_idORDER BY st.session_id, database_name

Esses tipos de consultas contra database_transactions são muito úteis ao monitorar as coisas tais como:

Sessões com transações de leitura-gravação abertas (especialmente importantes para sessões de dormir)

Sessões fazendo com que o log de transações para crescer/inchar

O progresso das operações de longa duração (para operações registradas não em massa, cada linha afetada irá produzir aproximadamente registro de log de uma transação)

Sobre o Bloqueio:

Nosso script de exemplo para a categoria relacionados com transacções de DMVs usa o dm _ tran_locks DMV, que é descrita por BOL da seguinte forma:

"Recursos do Gerenciador retorna informações sobre bloqueio atualmente ativo. Cada linha representa uma solicitação atualmente ativa para o Gerenciador de bloqueio para um bloqueio que tenha sido concedido ou está aguardando para ser concedido. As colunas no conjunto de resultados são divididas em dois grupos principais: recurso e pedido. O grupo de recursos descreve o recurso no qual está sendo feita a solicitação de bloqueio, e o grupo de solicitação descreve a solicitação de bloqueio".

Essa DMV é útil para ajudar a identificar problemas de bloqueio e bloqueio em suas instâncias de banco de dados:

-Olhar ativo bloqueio Manager recursos para o banco de dados atual

Selecione request_session_id,

Db_name(resource_database_id) AS [banco de dados], resource_type, resource_subtype, request_type, request_mode, resource_description, request_mode, request_owner_type

DE sys.dm_tran_locksWHERE request_session_id > 50 E resource_database_id = DB_ID () E request_session_id < > @ @ SPIDORDER BY request_session_id;

-Procure bloqueio

Selecione tl.resource_type, tl.resource_database_id, tl.resource_associated_entity_id, tl.request_mode, tl.request_session_id, wt.blocking_session_id, wt.wait_type, wt.wait_duration_msFROM dm _ tran_locks como tl INNER JOIN sys.dm_os_waiting_tasks como wt ON tl.lock_owner_address = wt.resource_addressORDER BY wait_duration_ms DESC;

A primeira consulta mostra tipos de bloqueio e seu estatuto por SPID, filtrados pelo banco de dados atual e eliminando a conexão atual e o sistema SPIDs. A segunda consulta fornece informações sobre qualquer bloqueio que podem estar ocorrendo, toda a instância. Observe que esta segunda consulta junta-se a sys.dm_os_waiting_tasks DMV para obter dados sobre quanto tempo que um processo tem esperado, devido ao bloqueio, e no qual o recurso.

A menos que você tenha graves problemas de bloqueio, você geralmente precisará executar que cada uma dessas consultas várias vezes para pegar o bloqueio. Se você identificar duas instruções de modificação de dados, ou uma consulta e a modificação de dados, que estão abraçando no bloqueio grave, ou mesmo deadlocks, então você precisará extrair o texto SQL para as consultas, examiná-los, executá-los em um sistema de teste — com Profiler rastreamento em execução — e descobrir uma maneira de ajustar as consultas, ou adicionar índices, para atenuar o problema.

...

Baixar como (para membros premium)  txt (9.2 Kb)   pdf (112.7 Kb)   docx (177 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com