Investigando um problema de performance em uma aplicação desenvolvida
por nosso colega Juracy Filho, descobrimos um sério problema de
performance.

A aplicação dele usa containers BTreeFolder e estava demorando até 5
minutos para gravar um novo registro. Alteração e listagem com boa
performance.

Ao debugar o problema descobrimos que o método contentIds em:
Products.CMFCore.PortalFolder.contentIds()
Acorda todos os objetos do container Btree, pois retorna uma chamada
de _filteredItems().

Mas por que um método que deveria retornar apenas os Ids, chama um
método que retorna Items?

A solução foi modificar:
 _at_rename_after_creation = False

Pois ele é que precisa do método contentIds()

Porém a melhor solução seria fazer uma sobrecarga desse método em
CMFBtreeFolder ou em BaseBtreeFolder.

Recentemente eu criei uma base de testes com 70000 objetos em um único
container Btree e fiquei muito insatisfeito com o resultado. Ele gerou
um Data.fs de 700MB e cerca de 50s para abrir cada página, com acesso
a disco muito alto.

Isso compromete muito a escalabilidade do Zope :-(.

--
Rudá Porto Filgueiras
Empresa Livre
http://www.empresalivre.com.br


Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a