[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

setFillFactor() e getFillFactor() (was RE: Jbase)



Hugo Kotsubo writes:

 >       O que fazem of metodos setFillFactor() e getFillFactor() declarados
 > na interface RecordSet?

Eles permitem que a aplicação defina/obtenha o fator de ocupação de
páginas. Vou explicar o que é e para que serve isso. 

A motivação para deixar páginas parcialmente ocupadas é permitir que
registros sejam atualizados "in place". O método update() da interface
RecordSet faz uma atualização de registro "in place". Note que ele
recebe o recordId do registro a ser atualizado. Depois da execução de um
update() o conteúdo do registro pode ser diferente (tipicamente será),
mas o seu recordId continua o mesmo. Isto significa que uma chamada a
update() não pode fazer o registro mudar de página! Caso o registro
atualizado não caiba na página onde o registro "mora", o método update()
deve lançar a exceção NotEnoughSpaceException.

Note que essa exceção só pode ocorrer se a atualização do registro
envolver campos de compromento variável (Strings). Aplicações que
chamem update() apenas para atualizar campos de comprimento fixo (campos
numéricos, por exemplo) não receberão NotEnoughSpaceException.

Uma aplicação que deseje fazer atualizações de campos de comprimento
variável pode definir um fator de ocupação de páginas menor que 1. 
Se ela chamar setFillFactor(0.7) sobre um RecordSet, as chamadas
subsequentes ao método add() para adicionar registros ao RecordSet
usarão um fator de ocupação de páginas de 70%. Elas alocarão espaço para
novos registros sem ocupar mais de 70% do espaço de cada página do
RecordSet. Com isso a aplicação diminui a probabilidade de receber
NotEnoughSpaceException numa chamada a update().

Embora eu tenha falado no método update() na explicação acima, o fator
de ocupação de páginas não afeta a implementação desse método. O fator
de ocupação de páginas só afeta a implementação do método add().

Reverbel