Esquema de bloqueio da tabela Sybase ASE ideal para a tabela de códigos de referência

StackOverflow https://stackoverflow.com/questions/5411111

  •  29-10-2019
  •  | 
  •  

Pergunta

Tenho uma tabela de códigos de referência que só será lida durante o uso normal e deve ser atualizada apenas para alterações do produto (mensalmente).

Qual bloqueio de tabela devo usar na instrução de criação de tabela?

Eu estava assumindo ALLPAGES porque isso mantém baixo o número total de bloqueios de leitura que o ASE precisa gerenciar;mas estou recebendo 'conselhos' diferentes de outro desenvolvedor sobre o projeto.

Vejo outras tabelas de referência no banco de dados em questão que usam ALLPAGES;mas eles foram atualizados do 12.5; isso pode ser um resquício do que estava disponível na época.

A tabela não é muito ampla, tem duas colunas de código numérico, uma coluna char (1) e está agrupada nos dois códigos numéricos.

Foi útil?

Solução

Eu tenho apenas uma resposta óbvia - execute sp_object_stats primeiro e escolha o esquema de bloqueio.

Outras dicas

If the reference table is only for reading, All-Pages locking is best as it takes least number of locks ( that you said ) and there is no conflict on Shared Locks that the processes acquire while reading data.

Just to give you an additional tip on performance: Always try to use a reference table through a co-related sub-query to take the advantage of sub-query caching. Also remember that sub-query caching takes place only when the sub-query has not been flattened by the optimizer and not converted back into a regular join. The trick to ensure than sub-query is not flattened is to use an aggregate function say max(attr) on the attribute. The max function will just be dummy without any "Group By".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top