Vous êtes sur la page 1sur 7

O que Lock?

o bloqueio que o registro sofre automaticamente ou manualmente para garantir a integridade das informaes que possam estar em uma transao ou no, os bloqueios so utilizados para no permitir que vrios usurios alterem o mesmo registro. Leia mais em: Transaes SQL SERVER http://www.devmedia.com.br/transacoes-sqlserver/15331#ixzz283lj3Tsx

Modos de bloqueio:

Tipos de Controle de Simultaneidade Quando muitas pessoas tentam modificar dados em um banco de dados ao mesmo tempo, um sistema de controles deve ser implementado de forma que as modificaes feitas por uma pessoa no afetem adversamente as de outra pessoa. Isso chamado controle de simultaneidade. A teoria do controle de simultaneidade tem duas classificaes para os mtodos de instituio do controle de simultaneidade:

Controle de simultaneidade pessimista Um sistema de bloqueios impede que os usurios modifiquem os dados de uma forma que afete outros usurios. Depois que um usurio executa uma ao que aplica um bloqueio, outros usurios no podem executar aes que estariam em conflito com o bloqueio at o proprietrio liberar o bloqueio. Isso chamado de controle pessimista porque principalmente usado em ambientes em que existe

conteno elevada dos dados, e que o custo da proteo dos dados com bloqueios inferior ao custo de reverso de transaes, caso ocorram conflitos de simultaneidade.

Controle de simultaneidade otimista No controle de simultaneidade otimista, os usurios no bloqueiam os dados quando os lem. Quando um usurio atualiza os dados, o sistema verifica se outro usurio alterou os dados depois de lidos. Se outro usurio tiver atualizado os dados, um erro ativado. Normalmente, o usurio que recebe o erro reverte a transao e inicia novamente. Isso chamado de controle otimista porque usado principalmente em ambientes em que existe conteno reduzida dos dados, e que o custo de reverso ocasional de uma transao inferior ao custo de bloqueio dos dados quando os mesmos so lidos. O Microsoft SQL Server oferece suporte a um intervalo de controle de simultaneidade. Os usurios especificam o tipo de controle de simultaneidade selecionando nveis de isolamento da transao para conexes ou opes de simultaneidade em cursores. Esses atributos podem ser definidos usando instrues Transact-SQL, ou pelas propriedades e atributos de APIs (interfaces de programao de aplicativo) de banco de dados, como ADO, ADO.NET, OLE DB e ODBC. Para obter mais informaes sobre simultaneidade em cursores, consulte Simultaneidade do cursor (Mecanismo de Banco de Dados). Para obter mais informaes sobre os nveis de isolamento da transao, consulte Nveis de isolamento no Mecanismo de Banco de Dados.

Nveis de Isolamento no Mecanismo de Banco de dados


As transaes especificam um nvel de isolamento que define o grau em que uma transao deve ser isolada contra modificaes de recursos ou de dados feitas por outras transaes. Os nveis de isolamento so descritos em termos de quais efeitos colaterais de simultaneidade so permitidos, como leituras sujas ou leituras fantasma. Nveis de isolamento da transao controlam: Se so feitos bloqueios quando os dados so lidos, e que tipo de bloqueio solicitado. Por quanto tempo os bloqueios de leitura so mantidos. Se uma linha de referncia de operao de leitura foi modificada por outra transao:

Bloqueia at que o bloqueio exclusivo na linha seja liberado. Recupera a verso confirmada da linha existente no momento em que a instruo ou transao foi iniciada. L a modificao de dados no confirmados. Escolhendo um nvel de isolamento da transao no afeta os bloqueios obtidos para proteger as modificaes de dados. Uma transao sempre obtm um bloqueio exclusivo em quaisquer dados que modifica e mantm tal bloqueio at que a transao seja concluda, sem considerar o conjunto de nveis de isolamento para a transao em questo. Para operaes de leitura, nveis de isolamento da transao definem principalmente o nvel de proteo dos efeitos das modificaes feitas por outras transaes. Um nvel de isolamento inferior aumenta a capacidade de muitos usurios acessarem dados ao mesmo tempo, mas aumenta o nmero de efeitos de simultaneidade (como leituras sujas ou atualizaes perdidas) que os usurios podem encontrar. Inversamente, um nvel de isolamento mais alto reduz os tipos de efeito de simultaneidade que os usurios podem encontrar, mas requer mais recursos do sistema e aumenta as chances de uma transao bloquear outra. Escolher o nvel de isolamento apropriado depende de equilibrar os requisitos de integridade de dados do aplicativo em relao sobrecarga de cada nvel de isolamento. O nvel de isolamento mais alto, serializvel, garante que uma transao recuperar exatamente os mesmos dados toda vez que repetir uma operao de leitura, mas faz isto executando um nvel de bloqueio que provavelmente causar impacto em outros usurios em sistemas multiusurios. O mais baixo nvel de isolamento, leitura de dados no confirmados, pode recuperar dados que foram modificados mas no foram confirmados por outras transaes. Todos os efeitos colaterais de simultaneidade podem acontecer em leitura no confirmada, mas no h nenhum bloqueio de leitura ou controle de verso, assim a sobrecarga minimizada. Nveis de isolamento do Mecanismo de Banco de Dados O padro ISO define os seguintes nveis de isolamento, todos tm suporte pelo Mecanismo de banco de dados do SQL Server: Leitura no confirmada (o mais baixo nvel onde transaes s esto isoladas o bastante para assegurar que dados corruptos fisicamente no so sejam lidos) Leitura confirmada (Mecanismo de Banco de Dados nvel padro) Leitura repetida Serializvel (o nvel mais alto, onde as transaes esto completamente isoladas uma da outra) Observao importante Importante

Pode haver falha em operaes e transaes DDL em tabelas replicadas quando o nvel de isolamento serializvel solicitado. Isso ocorre porque as consultas de replicao usam dicas que podem ser incompatveis com o nvel de isolamento serializvel. O SQL Server tambm oferece suporte a dois nveis de isolamento de transao que usam controle de verso de linha. uma implementao nova de isolamento de leitura confirmada e um nvel de isolamento da transao novo, instantneo. Quando a opo de banco de dados READ_COMMITTED_SNAPSHOT estiver definida como ON, o isolamento de leitura confirmada usar o controle de verso de linha para fornecer consistncia de leitura no nvel da instruo. Operaes de leitura s requerem bloqueios de nvel de tabela SCH-S e nenhum bloqueio de pgina ou linha. Quando a opo do banco de dados READ_COMMITTED_SNAPSHOT estiver defnida como OFF, que a configurao padro, o isolamento de leitura confirmada se comportar conforme verses anteriores do SQL Server. Ambas as implementaes satisfazem a definio de ANSI de isolamento de leitura confirmada. O nvel de isolamento do instantneo usa controle de verso de linha para fornecer consistncia de leitura em nvel de transao. Operaes de leitura no requerem bloqueios de pgina ou linha; apenas bloqueios de tabela SCH-S so necessrios. Ao ler linhas modificadas por outra transao, elas recuperam a verso da linha que existia na inicializao da transao. possvel usar o Isolamento do instantneo em um banco de dados quando a opo de banco de dados ALLOW_SNAPSHOT_ISOLATION estiver definida como ON. Por padro, essa opo definida como OFF para bancos de dados de usurios. Observao Observao O SQL Server no tem suporte para controle de verso de metadados. Por isso, h restries nas operaes de DDL que podem ser executadas em uma transao explcita que est sendo executada sob isolamento do instantneo. As instrues de DDL a seguir no so permitidas sob isolamento do instantneo depois de uma instruo BEGIN TRANSACTION: ALTER TABLE, CREATE INDEX, CREATE XML INDEX, ALTER INDEX, DROP INDEX, DBCC REINDEX, ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME ou qualquer instruo CRL (Common Language Runtime) DDL. Essas instrues so permitidas quando voc est usando isolamento do instantneo em transaes implcitas. Uma transao implcita, por definio, uma instruo nica que torna possvel impor semnticas de isolamento do instantneo, at mesmo com instrues DDL. Violaes desse princpio podem causar o erro 3961: Falha na transao de isolamento do instantneo no banco de dados '%. * ls' porque o objeto acessado pela instruo foi modificado por uma instruo de DDL em outra transao simultnea desde o incio dessa transao. Isso no permitido porque os metadados no tm controle de verso. Uma atualizao simultnea para metadados poderia gerar inconsistncias se misturada com isolamento do instantneo." A tabela a seguir mostra os efeitos colaterais de simultaneidade habilitados por nveis de isolamento diferentes.

Para obter mais informaes sobre os tipos especficos de bloqueio ou controle de verso de linha controlado para cada nvel de isolamento da transao, consulte SET TRANSACTION ISOLATION LEVEL (Transact-SQL). Usado para operaes da modificao de dados, como INSERT, UPDATE ou DELETE. Assegura que vrias atualizaes no sejam realizadas no mesmo recurso e ao mesmo tempo.

Ajustando Nveis de Isolamento


A propriedade de isolamento uma das quatro propriedades ACID (atomicidade, consistncia, isolamento e durabilidade) que uma unidade lgica de trabalho deve ter para que seja qualificada como uma transao. a habilidade para proteger transaes dos efeitos de atualizaes executadas por outras transaes simultneas. O nvel de isolamento realmente personalizvel para cada transao. O Mecanismo de banco de dados do SQL Server d suporte a nveis de isolamento da transao definidos em SQL-92. A definio de nveis de isolamento da transao permite aos programadores trocar o risco crescente de problemas de integridade por maior acesso simultneo aos dados. Os nveis de isolamento da transao so: READ UNCOMMITTED READ COMMITTED

REPEATABLE READ SNAPSHOT SERIALIZABLE Com duas excees, cada nvel de isolamento oferece mais isolamento do que o nvel anterior mantendo mais bloqueios restritivos para perodos mais longos. As excees so SNAPSHOT e READ COMMITTED quando READ_COMMITTED_SNAPSHOT definido como ON. Esses nveis de isolamento no adquirem bloqueios compartilhados em linhas de dados durante operaes de leitura. S so mantidos apenas os bloqueios SCH-S no nvel de tabela. Nveis de isolamento da transao podem ser definidos usando Transact-SQL ou por uma API de banco de dados. Transact-SQL Scripts Transact-SQL usam a instruo SET TRANSACTION ISOLATION LEVEL. ADO Aplicativos ADO definem a propriedade IsolationLevel do objeto Conexo como adXactReadUncommitted, adXactReadCommitted, adXactRepeatableRead ou adXactReadSerializable. ADO.NET Aplicativos ADO.NET que usam o namespace gerenciado System.Data.SqlClient podem chamar o mtodo SqlConnection.BeginTransaction e podem definir a opo IsolationLevel com Unspecified, Caos, READUNCOMMITTED, READCOMMITTED, REPEATABLEREAD, Serializable e Snapshot. OLE DB Ao iniciar uma transao, aplicativos que usam chamada OLE DB ITransactionLocal::StartTransaction com isoLevel definidos como ISOLATIONLEVEL_READUNCOMMITTED, ISOLATIONLEVEL_READCOMMITTED, ISOLATIONLEVEL_REPEATABLEREAD, ISOLATIONLEVEL_SNAPSHOT ou ISOLATIONLEVEL_SERIALIZABLE. Ao especificar o nvel de isolamento da transao em modo de confirmao automtica, aplicativos OLE DB podem definir a propriedade DBPROPSET_SESSION como DBPROP_SESS_AUTOCOMMITISOLEVELS DBPROPVAL_TI_CHAOS, DBPROPVAL_TI_READUNCOMMITTED, DBPROPVAL_TI_BROWSE, DBPROPVAL_TI_CURSORSTABILITY, DBPROPVAL_TI_READCOMMITTED, DBPROPVAL_TI_REPEATABLEREAD, DBPROPVAL_TI_SERIALIZABLE, DBPROPVAL_TI_ISOLATED ou DBPROPVAL_TI_SNAPSHOT. ODBC

Aplicativos ODBC chamam SQLSetConnectAttr com Attribute definido como SQL_ATTR_TXN_ISOLATION e ValuePtr definido como SQL_TXN_READ_UNCOMMITTED, SQL_TXN_READ_COMMITTED, SQL_TXN_REPEATABLE_READ ou SQL_TXN_SERIALIZABLE. Para transaes de instantneo, aplicativos chamam SQLSetConnectAttr com atributo definido como SQL_COPT_SS_TXN_ISOLATION e ValuePtr definido como SQL_TXN_SS_SNAPSHOT. Uma transao de instantneo que usa SQL_COPT_SS_TXN_ISOLATION ou SQL_ATTR_TXN_ISOLATION pode ser recuperada. Consulte tambm Referncia SET TRANSACTION ISOLATION LEVEL (Transact-SQL) Conceitos Nveis de isolamento no Mecanismo de Banco de Dados Nveis de isolamento (OLE DB)

Vous aimerez peut-être aussi