Exemplos do comportamento de LOCKS

Versão para impressãoEnviar para amigoVersão PDF

Para se trabalhar corretamente com locks no banco é preciso identificar qual o tipo de acesso cada funcionalidade da aplicação precisa e assim configurar o tipo de acesso compatível.

As váriaveis sempre serão :

  • SET ISOLATION
  • SET LOCK MODE
  • BEGIN/COMMIT
  • USE LAST COMMITTED
  • utilizado cursor ou não.
  • realiza gravação ou apenas leitura
Para mais informações sobre locks, leia este artigo

  1. Trabalhar com locks , utilizando CURSORES
    1. Teste 1
    2. Teste 2
    3. Teste 3
  2. Trabalhar com locks , utilizando SQL
    1. Teste 1
    2. Teste 2

Trabalhar com locks , utilizando CURSORES


Os testes realizados com cursores foram feitos com a linguagem de progração I-4GL

CS = Cursor Stability
CR = Comitted Read
RR = Repeatable Read
DR = Dirty Read

Teste 1


  • Comandos utilizados
    DECLARE (sem parametros, equivale ao read only),
    OPEN,FETCH,CLOSE,FREE
  • Teste SEM transação
    - CS , CR, RR : Não colocou nenhum tipo de lock nas linhas selecionadas em cada FETCH
  • Teste COM transação
    - CS: Colocou HDR+S durante cada fetch
    - CR: Não colocou nenhum tipo de lock
    - RR: Não colocou nenhum tipo de lock

Teste 2


  • Comandos utilizados
    DECLARE ... FOR UPDATE
    OPEN,FETCH,CLOSE,FREE
  • Teste SEM transação
    Ocorreu erro,
  • Teste COM transação
    - CS: Colocou HDR+U durante cada fetch
    - CR: Colocou HDR+U durante cada fetch
    - RR: Colocou e manteve o HDR+U durante cada fetch , colocou HDR+SIX na tabela

Teste 3


  • Comandos utilizados
    DECLARE ... SCROLL (não funciona com FOR UPDATE)
    OPEN,FETCH,CLOSE,FREE
  • Teste SEM transação
    Ocorreu erro,
  • Teste COM transação
    - CS: Colocou lock HDR+S em uma linha (como se fosse final de pagina) e HDR+IS na tabela
    - CR: Não colocou nenhum tipo de lock
    - RR: Não colocou nenhum tipo de lock nas linhas, apenas HDR+S na tabela
    -- Criou tabela temporária com dados carregado pelo cursor.
    -- Não foi possivel travar os registros já na leitura com o RR pq o FOR UPDATE não é compátivel.

Trabalhar com locks , utilizando SQL

Observação: Lembrar que como se trata de Querys, os fetch são automáticos e "instantaneos"

Teste 1


  • Comandos utilizados
    SELECT simples
  • Teste SEM transação
    - CS, CR, RR: não coloca nenhum tipo de lock
  • Teste COM transação
    - CS: Colocou HDR+S durante cada fetch , colocou HDR+IS na tabela
    - CR: não coloca nenhum tipo de lock
    - RR: não coloca nenhum tipo de lock no registro, colocou HDR+S na tabela

Teste 2


  • Comandos utilizados
    SELECT FOR UPDATE
  • Teste SEM transação
  • Teste COM transação
    - CS: Colocou HDR+U durante cada fetch, colocou HDR+IX na tabela
    - CR: Colocou HDR+U durante cada fetch, colocou HDR+IX na tabela
    - RR: Colocou e manteve o HDR+U durante cada fetch , colocou HDR+SIX na tabela

0
Ainda não votado
Sua avaliação: Nenhum
Tags:

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.