A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Controle de Concorrência

Apresentações semelhantes


Apresentação em tema: "Controle de Concorrência"— Transcrição da apresentação:

1 Controle de Concorrência

2 Transação Uma transação em ORACLE começa com o início da primeira instrução após uma instrução de COMMIT ou ROLLBACK, ou o estabelecimento de uma conexão ao servidor. Uma transação termina com uma instrução de COMMIT, ROLLBACK ou com a finalização da conexão. Se a conexão termina normalmente, o ORACLE executa um COMMIT implicitamente. Se a conexão termina abruptamente o ORACLE emite um ROLLBACK. Quando é executada uma instrução da DDL, o ORACLE previamente emite um COMMIT.

3 CONTROLE DE CONCORRÊNCIA
Uma das tarefas do RDBMS é o controle da concorrência, que é o acesso aos mesmos dados por vários usuários. Se não existir um controle de concorrência apropriado, vários dados podem ser alterados incorretamente, comprometendo a integridade do banco de dados. Para manter a consistência e integridade do banco de dados, um mecanismo de bloqueio é implantado.

4 O QUE É O BLOQUEIO (LOCK)?
Locks são mecanismos que previnem conflitos entre transações que acessam o mesmo recurso O bloqueio previne que alterações simultâneas não ocorram no mesmo pedaço de dado por dois ou mais usuários, garantindo que uma tabela ou coluna não seja alterada enquanto está ocorrendo uma alteração na tabela.

5 O QUE É O BLOQUEIO (LOCK)?
O ORACLE permite que vários usuários façam leitura ao mesmo dado ao mesmo tempo (concorrente), isto significa que não é necessário fazer um bloqueio (LOCK), quando o banco de dados é acessado para recuperar dados (LEITURA). Locks no Oracle são automáticos e não necessitam de interação do usuário. Os usuários que fazem leitura não bloqueiam os usuários que fazem escrita, e os usuários que fazem escrita não bloqueiam os usuários que fazem leitura.

6 QUANDO É NECESSÁRIO O BLOQUEIO (LOCK)?
O bloqueio sempre é necessário quando um usuário tentar fazer alguma alteração no banco de dados. Insert, update, delete

7 QUANDO O BLOQUEIO (LOCK) É LIBERADO?
O bloqueio é liberado quando ocorre um COMMIT ou ROLLBACK com sucesso, ou seja, quando a transação é finalizada.

8 TIPOS DE BLOQUEIO A) Bloqueio DDL - DATA DICTIONARY LOCK
· O controle de acesso é definido nos objetos do Banco de Dados; · É utilizado nas operações dos comandos SQL que modificam o DICIONÁRIO DE DADOS; EX.: CREATE TABLE, ALTER TABLE, DROP TABLE; · Automaticamente controlado pelo núcleo do banco de dados; B) Bloqueio DML - DATA MANIPULATION LOCK · Bloqueio IMPLÍCITO - É controlado pelo ORACLE, e ocorre automaticamente quando os comandos, INSERT, UPDATE e DELETE são utilizados por um usuário; · Bloqueio Explícito - É controlado pelo usuário, e ocorre quando o usuário especifica o bloqueio desejado na tabela, através dos comandos SQL SELECT...FROM, UPDATE e LOCK TABLE, anulando o bloqueio default. O bloqueio é liberado através de um COMMIT ou ROLLBACK;

9 Tipos de Lock exclusive: shared lock:
Previne que recursos sejam compartilhados. A primeira transação que realiza lock exclusivo em um recurso, é a única transação que pode alterar o recurso até que o lock exclusivo seja liberado shared lock: Permite que recursos sejam compartilhados. Vários usuários podem ler os dados, realizando “shared lock” para prevenir acesso concorrente de escrita(necessita de um lock exclusive) Várias transações podem adquirir um “shared lock” em um recurso

10 NÍVEL DE BLOQUEIO O bloqueio pode ser feito de duas formas: nível de tabela ou nível de linha (ROW); O bloqueio de tabela - Toda tabela fica bloqueada; O bloqueio de linha (ROW) - Uma linha individual da tabela fica bloqueada.

11 DEADLOCK Um DEADLOCK pode ocorrer quando dois ou mais usuários estão tentando acessar o mesmo objeto do banco de dados.

12 Assumindo T1 e T2 como transações, considere o exemplo a seguir
transação T1 adquire um lock exclusivo para o objeto A; T2 adquire um lock exclusivo para o objeto B; T1 requisita um lock exclusivo para o objeto B e o pedido é armazenado numa fila; T2 requisita um lock exclusivo para o objeto A e o pedido é armazenado numa fila. T1 está aguardando que T2 liberte o lock do objeto B e T2 está aguardando que T1 liberte o lock do objeto A. Tal ciclo de transações aguardando a liberação de locks é chamado de deadlock. Fica claro que essas transações não terão progresso. Ou pior, podem estar solicitando locks que estão sendo requeridos por outras transações. O SGBD deve prever ou detectar (e resolver) qualquer situação de deadlock.

13 DEADLOCK Uma maneira simples de detectar deadlocks é utilizar um mecanismo de timeout. Se uma transação tem aguardado muito tempo por um pedido de lock, pode-se assumir que um ciclo de deadlock foi detectado e escolhe-se por abortá-lo.

14 Prática


Carregar ppt "Controle de Concorrência"

Apresentações semelhantes


Anúncios Google