Escolar Documentos
Profissional Documentos
Cultura Documentos
br
learningdatabase.com.br
17/05/2018
RODRIGOSAITO
CONCORRÊNCIA DE TRANSAÇÕES
Transação é a forma por um grupo, lote, ou uma série de alterações em uma fonte de dados
seja todas atualizadas com sucesso.
Caso uma delas venha a falhar, todos as alterações são desfeitas.
Para preserver a consistência dos dados envolvidos no lote de atualizações, o SQL Server
mantém bloqueios nas linhas que estão sendo atualizadas.
O período de tempo que estes bloqueios são mantidos é conhecido como escopo de
transação (transaction scope).
Uma forma de garantir a concorrência do banco de dados é garantir que os escopos de
transação sejam matidos o menor tempo possível, permitindo o SQL Server liberar os
bloqueios que estão sendo segurados e permitir que outros usuários acessem as linhas que
foram modificadas.
As transações são uma forma de garantir as propriedade de atomicidade, consistência,
isolamento e durabilidade (ACID) de um banco de dados. (pág. 468)
COMPATIBILIDADES DE LOCK
Microsoft best practices specify that all tables should have a clustered index created because
queries against heaps generally lead to table locks (because all leaf pages have to be scanned
for results that match the query predicate) and reduce concurrency. (Pág 472)
READ UNCOMMITTED – Os dados que não foram efetivados podem ser lidos. Embora um
bloqueio exclusive ainda obstrua outro bloqueio exclusívo, as operações de leitura ignoram um
bloqueio exclusívo.
READ COMMITTED (Padrão do SQL Server) – Um bloqueio exclusívo obstrui bloqueios
compartilhados, assim como bloqueios exclusívos. Os bloqueios compartilhados serão
liberados assim que os dados forem lidos.
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 3/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
READ SERIALIZABLE – Igual a todas as constraints do nível de isolamento Repeatable Read.
Além disso, voce não pode inserir uma nova linha dentro do intervalo do conjunto de chaves
(keyset) correntemente bloqueado pela transação. Bloqueios são mantidos pela duração da
transação.
SNAPSHOT – Usa o recurso de controle de versão de linha para impeder que bloqueis
compartilhados e exclusívos obstruam uns aos outros, enquanto mantém a consistência dos
dados. Uma operação de leitura recupera dados da versão da linha antes de iniciar uma
operação de modificação de dados.
DBCC USEROPTIONS
GO
USE IL
GO
--Criacao da tabela 1
CREATE TABLE tbIsolationLevel
(
Id INT IDENTITY,
Col1 varchar(10),
Col2 varchar(10),
Col3 varchar(10)
)
GO
--Criacao da tabela 2
CREATE TABLE tbDeadlock ( id INT)
GO
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 4/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
READ COMMITED
BEGIN TRAN
UPDATE tbIsolationLevel set Col1 = 'DDDDD' where id = 1
WAITFOR DELAY '00:00:10'
ROLLBACK TRAN
READ UNCOMMITED
BEGIN TRAN
UPDATE tbIsolationLevel set Col1 = 'DDDDD' where id = 1
WAITFOR DELAY '00:00:10'
ROLLBACK TRAN
REPETEATABLE READ
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 5/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
Em Snapshot Isolation, as versões de linha atualizados para cada transação são mantidos
em TempDB. Uma vez que a transação foi iniciada, ignora todas as linhas mais recentes
inseridos ou atualizados na tabela.
USE AdventureWorks2012
GO
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 6/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
/
ALTER DATABASE AdventureWorks2012
SET ALLOW_SNAPSHOT_ISOLATION ON
GO
SELECT ModifiedDate
FROM HumanResources.Shift
GO
-- Session 1
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
UPDATE HumanResources.Shift
SET ModifiedDate = GETDATE()
GO
-- Session 2
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
SELECT ModifiedDate
FROM HumanResources.Shift
GO
-- Session 1
COMMIT
-- Session 2
SELECT ModifiedDate
FROM HumanResources.Shift
GO
SELECT ModifiedDate
FROM HumanResources.Shift
GO
SNAPSHOT (INSTANTÂNEOS)
O recurso Database SnapShot foi introduzido no SQL Server 2005 para oferecer aos usuários
um método para criar cópias somente leitura de dados rapidamente.
Esse recurso somente está disponível no SQL Server Enterprise.
O DataBase SnapShot não é compatível com FILE STREAM.
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 7/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
Voce deve incluir uma entrada para cada arquivo de dados especificado no banco de dados
de origem;
O nome lógico de cada arquivo deve corresponder exatamente ao nome no banco de dados
de origem;
Voce não pode fazer backup, restaurar ou remover um snapshot de banco de dados;
O snapshot de banco de dados deve existir na mesma instância do banco de dados de
origem;
Índices full text não são suportados;
FILESTREAM não é suportado e quaisquer dados FILESTREAM serão inacessíveis por meio do
snapshot de banco de dados;
Voce não pode criar um snapshot de banco de dados em um banco de dados de sistema;
Voce não pode eliminar, restaurar ou remover um banco de dados de origem que tenha um
snapshot de banco de dados;
Você não pode fazer referencia a grupos de arquivos que estejam off-line, extintos ou sem
restauração;
Para que um aplicativo acessa o snapshot é da mesma forma que acessasse um banco de
dados normalmente;
No momento da criação do snapshot, o banco de dados não contém dados. Quando uma
instrução SELECT é executada, o SQL Server usa o banco de dados de origem para recuperar
dados que não mudaram desde que você criou o snapshot;
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 8/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
É possível fazer o retorno dos dados até o momento da criação do snapshot.
Em casos extremos, você pode usar o snapshot para retornar todo o conteúdo do banco de
dados de origem para o estado do snapshot.
Por exemplo, se você precisar descartar todas as alterações ocorrida dentro do banco de
dados desde que o snapshot de banco de dados foi criado;
Uma reversão de banco de dados é uma categoria especial de restauração de dados que
pode ser executada quando você tiver criado um snapshot;
Você pode reverter apenas uma linha ou parte do banco de dados, podendo usar os
comandos INSERT, UPDATE, DELETE ou MERGE, ou também reverter um banco de dados por
completo.
Quando você usa o snapshot para reverter o banco de dados inteiro, o banco de dados de
origem volta exatamente para como estava no momento em que o snapshot foi criado.
Todas as transações executadas no banco de dados são perdidas.
Quando você reverte um banco de dados de origem existem várias restrições:
Pode existir apenas um snapshot de banco de dados para o banco de dados origem;
Catálogos full text no banco de dados de origem devem ser eliminados e então recriados,
depois que a reversão terminar;
Como o log de transação é reconstruído, o encadeamento de logs de transação é
desfeito;
O banco de dados de origem e o snapshot de banco de dados ficam offline durante o
processo de reversão;
O banco de dados de origem não pode ser ativado para FileStream;
USE master
GO
use AdventureWorks2012Snap
select * from person.Address
use master
go
REFERÊNCIAS
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 9/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
https://msdn.microsoft.com/pt-
br/library/ms173763.aspxhttp://www.diegonogare.net/2013/01/transaction-isolation-level-voc-
est-usando-certo/ (https://msdn.microsoft.com/pt-
br/library/ms173763.aspxhttp://www.diegonogare.net/2013/01/transaction-isolation-level-voc-
est-usando-certo/)
BIBLIOGRAFIA BÁSICA
HOTEK, M. MCTS Self-Paced Training Kit (Exam 70-432) Microsoft SQL Server 2008 –
Implementation and Maintenance. EUA: Microsoft Press, 2009.
STANEK, William R. Microsoft SQL Server 2008 – Guia de Bolso do Administrador. Porto
Alegre: Bookman, 2010.
HOTEK, M. Microsoft SQL Server 2008 – Passo a Passo. Porto Alegre: Bookman, 2010.
Video 01
Video 02
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 10/12
02/02/2019 Banco de Dados II – Aula 14 – learningdatabase.com.br
Anúncios
REPORT THIS AD
REPORT THIS AD
ADMINISTRAÇÃO DE SERVIDORES DE BANCO DE DADOS
ADMINISTRAÇÃO SQL SERVER
SQL SERVER
WordPress.com.
https://learningdatabase.com.br/2018/05/17/banco-de-dados-ii-aula-14/ 12/12