Banco de Dados - Sybase

Conhecendo o acesso a estrutura de lock do Sybase

Mais um recurso do Sybase, que podemos tirar proveito no ambiente OLTP, com a estratégia certa na utilização do acesso pelo lock.

por Luis Raposo



Atualizado e corrigido em 10/09/2008.

Mais um recurso do Sybase, que podemos tirar proveito no ambiente OLTP, com a estratégia certa na utilização do acesso pelo lock.

A Sybase tem como configuração default a estratégia de lock ALLPAGES (acesso a todas as páginas da árvore de acesso da seleção em uma transação). Essa estratégia para o ambiente OLTP, nem sempre é interessante, pois podemos ter várias transações presas/pendentes (observada via SP_LOCK) a espera da liberação de uma tabela (páginas/linhas) para continuar a transação, gerando impacto e lentidão no ambiente.

A partir da versão 11.9.2, podemos definir no ASE 02 (duas) estratégias para manipulação de lock:

    Exemplo prático de utilização – tabela ESTOQUE (colunas: codigo e produto):

    A primeira transação faz um lock na informação “HAMBURGUER” para um update na quantidade em estoque, enquanto a segunda transação faz um lock na informação “MANTEIGA” fazendo um select na quantidade de estoque.

    Então, se essas linhas com a informação HAMBURGUER e MANTEIGA estiverem em páginas diferentes “BINGO!!!!”, não teremos uma transação esperando a outra terminar/travando, garantindo a execução das duas transações e velocidade ao OLTP.

    Neste exemplo deveremos deixar as tabela ESTOQUE em estratégia de DATAPAGES, garantindo menos quantidade de lock gerados e menos recurso de memória do ASE.

    1. DATAROWS -> Lock somente das linhas que envolvem uma seleção na transação.

    Onde podemos definir na criação da tabela com lock de datarows ou fazer um alter table.

    Exemplo prático de utilização – tabela ESTOQUE (colunas: código e produto):

    A primeira transação faz um lock na informação “PEIXE” para um update na quantidade em estoque, enquanto a segunda transação faz um lock na informação “PICANHA” fazendo um select na quantidade de estoque.

    Como temos somente 2 (dois) campos CODIGO e PRODUTO, as informações PEIXE e PICANHA provavelmente (100 % chance) que estarão na mesma página, mas a estratégia de lock DATAROWS irá fazer 2 (dois) lock´s e BINGO!!!!” novamente, pois teremos duas transações acontecendo, sem que a segunda espere a primeira terminar para ser executada. “Velocidade no OLTP”.

    Uma dica legal é deixar a configuração do ASE sempre em estratégia de lock ALLPAGES, garantindo compatibilidade com versões antigas e também pelo fato de ir descobrindo quais objetos (tabelas) são as mais “NERVOSAS” do ambiente para ir alterando e permitindo velocidade ao OLTP e utilização de recurso.

    Depois da descoberta das tabelas mais ”NERVOSAS”, o mais interessante é alterar primeiro para estratégia de DATAPAGES, monitorar pra ver se o resultado foi o ideal e se ainda percebermos muita transação curta (OLPT) presa/travada, ai sim podemos alterar para a estratégia DATAROWS.

    Lembre-se que devemos observar os recursos que são utilizados (mais MAX MEMORY e LOCK).

    Até a próxima

Luis Raposo

Luis Raposo