Loading ...
Sorry, an error occurred while loading the content.

19096Re: [riojug] Re: Hibernate Isolation !?

Expand Messages
  • Cristiane Missias Cândido
    Aug 1, 2007
    • 0 Attachment
      Olá Marco,

      Enviei um email uns dias atráz respondendo sua dúvida, parece que não foi o
      email. Estou enviando novamente.

      Passei por este problema de lock quando tentava inserir dados em batch.
      Resolvi este problema abrindo e fechando a sessão antes e após o
      processamento.
      Para esclarecer segue um pseudo-código, abaixo:

      //abre sessão

      while( fim de leitura do xml )
      {
      //salva dados
      //release a cada 100 registros
      }

      //fecha sessão


      >From: "Marco Duarte" <marcoduarte@...>
      >Reply-To: riojug@yahoogroups.com
      >To: <riojug@yahoogroups.com>
      >Subject: Re: [riojug] Re: Hibernate Isolation !?
      >Date: Tue, 31 Jul 2007 23:58:00 -0300
      >
      >Fábio, ... muito obrigado por sua ajuda e sugestões.
      >
      >Marco Antonio
      > ----- Original Message -----
      > From: fabiolnmiranda
      > To: riojug@yahoogroups.com
      > Sent: Tuesday, July 31, 2007 5:06 PM
      > Subject: [riojug] Re: Hibernate Isolation !?
      >
      >
      > Não sei como seria no MS SQL Server, mas no MySQL Administrator (que
      > eu uso com frequencia), há um menu Startup Variables / Advanced
      > Networking, onde podemos configurar várias opções do Banco de Dados.
      >
      > Uma delas é o waitTimeout - tempo que o SGBD aguarda por atividade em
      > uma conexão antes de fechá-la. Outra é o maxConnections - número
      > máximo de clientes simultâneos. A configuração no pool deve levar
      > estes valores em consideração.
      >
      > Por exemplo, não posso configurar um pool de 100 conexões caso o BD
      > esteja configurado para liberar apenas 50 conexões simultaneas.
      >
      > Acho (nunca testei) que o mesmo raciocínio vale em ambientes com mais
      > de uma aplicação, com vários bancos em um mesmo SGBD. Por exemplo, 2
      > aplicações, com BD liberando 50 conexões, pode-se colocar um pool com
      > 30 conexões e o outro com 20 (a soma não ultrapassa 50).
      >
      > Por outro lado, caso o waitTimeout do banco seja menor que o
      > maxIdleTime do pool, pode ocorrer de o banco encerrar uma conexão, e
      > ela continuar no pool (caso o pool reusar essa conexão, será lançada
      > uma exceção). Caso o waitTimeout seja maior, pode acontecer de o pool
      > liberar a conexão e ela continuar ociosa no banco. Na dúvida, costumo
      > configurar os dois com o mesmo valor.
      >
      > Dito isso (espero que alguém me corrija caso tenha falado alguma
      > bobagem), um caminho para verificação seria:
      >
      > 1) Investigar a configuração do SGBD.
      > 2) Verificar se as configurações do Pool estão coerentes com as do
      > SGBD.
      > 3) (Tunning) Testar configurações - aumentar/diminuir o waitTimeout,
      > aumentar/diminuir conexões simultaneas - e verificar se há melhora no
      > desempenho da aplicação em alguma delas.
      >
      > Abs
      >
      > --- In riojug@yahoogroups.com, "Marco Duarte" <marcoduarte@...> wrote:
      > >
      > > Oi, Fábio... valeu pelas dicas!!!!
      > >
      > > Mas, eu não utilizo C3Po, e sim o dbcp. Abaixo uma parte do cfg e,
      > peço a vc e aos demais colegas, alguma observação sobre os
      > parametros. "Quem sabe alguma bobeira minha faltando ou demais?".
      > >
      > > <property name="connection.username">usrprod</property>
      > >
      > > <property name="connection.password">bdpas</property>
      > >
      > > <property
      > name="connection.url">jdbc:jtds:sqlserver://bdsql2005/bdprod</property
      > >
      > >
      > > <property name="hibernate.dbcp.maxActive">200</property>
      > >
      > > <property name="hibernate.connection.isolation">2</property>
      > >
      > > <property name="hibernate.dbcp.whenExhaustedAction">1</property>
      > >
      > > <property name="hibernate.dbcp.maxWait">120000</property>
      > >
      > > <property name="hibernate.dbcp.maxIdle">200</property>
      > >
      > >
      > > <!-- Enable Hibernate's automatic session context management -->
      > >
      > > <property name="current_session_context_class">thread</property>
      > >
      > > <!-- Disable the second-level cache -->
      > >
      > > <property
      > name="cache.provider_class">org.hibernate.cache.NoCacheProvider</prope
      > rty>
      > >
      > >
      > >
      > > obrigado
      > >
      > > Marco Antonio
      > >
      > >
      > >
      > > ----- Original Message -----
      > > From: fabiolnmiranda
      > > To: riojug@yahoogroups.com
      > > Sent: Sunday, July 29, 2007 3:32 PM
      > > Subject: [riojug] Re: Hibernate Isolation !?
      > >
      > >
      > > Realmente, Marco,
      > >
      > > Depurar estes tipos de problema oferecem dificuldade adicional,
      > pois
      > > pode haver necessidades de ajustes tanto no BD, como no Pool ou
      > mesmo
      > > no framework de ORM. Para ter certeza do diagnóstico, pode ser
      > > necessário estudar mais a fundo cada um dos 3.
      > >
      > > Algumas dicas:
      > > 1) Cuidado com o parâmetro maxPoolSize do Pool e o número máximo
      > de
      > > conexões que o BD está configurado para liberar.
      > >
      > > 2) Cuidado com o parâmetro maxIdleTime do Pool e as configurações
      > > de "connection timeout" do banco.
      > >
      > > 3) Para ajudar a depurar problemas de conexão usando o Pool C3P0,
      > vc
      > > pode usar o parâmetro debugUnreturnedConnectionStackTraces:
      > >
      > > http://forum.hibernate.org/viewtopic.php?
      > > p=2324954&sid=d173e756b9ba62a4da397b01bf494556
      > >
      > > "set debugUnreturnedConnectionStackTraces to true. If this
      > parameter
      > > is set, the stack trace associated with all Connection checkouts
      > will
      > > be cached, and when a Connection has to be destroyed for
      > outliving
      > > unreturnedConnectionTimeout, the stack trace that checked it out
      > will
      > > be dumped -- at INFO level -- to logs. This lets you see exactly
      > what
      > > check-out in your app potentially fails to check back in. (Only
      > use
      > > this parameter while debugging, as it harms performance.)"
      > >
      > > Abs
      > > Fábio.
      > >
      > > --- In riojug@yahoogroups.com, "Marco Duarte" <marcoduarte@>
      > wrote:
      > > >
      > > > Fábio,
      > > >
      > > > Uso sim um pool de conexão. Já fiz a verificação de de
      > fechamento
      > > de conexão perdida. Com a experiencia dessa aplicação, estou
      > > estudando mais o Hibernate e, me certificando que, "o buraco é
      > bem
      > > mais em baixo". É preciso "cuidado" em todas as ações de acesso
      > ao
      > > banco e configuração do hibernate.
      > > >
      > > > Ainda não identifiquei o default de "isolamento" assumido pelo
      > > hibernate. Mas, estou para especificar isolamento 2 (leitura
      > > comitada).
      > > >
      > > > Obrigado e grande abraço.
      > > > Marco Antonio
      > > >
      > > > ----- Original Message -----
      > > > From: fabiolnmiranda
      > > > To: riojug@yahoogroups.com
      > > > Sent: Sunday, July 29, 2007 10:57 AM
      > > > Subject: [riojug] Re: Hibernate Isolation !?
      > > >
      > > >
      > > > Oi Marco,
      > > >
      > > > Como é feita a conexão ao banco? Vc usa um pool? Vc tem como
      > > > monitorar no banco o número de conexões abertas? Às vezes
      > > problemas
      > > > de travamento no BD podem ocorrer devido ao fato de haverem
      > > conexões
      > > > ociosas abertas, e o banco não libera a criação de novas
      > > conexões,
      > > > sendo essa uma possibilidade passível de verificação.
      > > >
      > > > Cordialmente,
      > > > Fábio.
      > > >
      > > > --- In riojug@yahoogroups.com, "Marco Duarte" <marcoduarte@>
      > > wrote:
      > > > >
      > > > > Olá,
      > > > >
      > > > > Estou numa aplicacao em producao, com Hibernate e MSSQL
      > Server,
      > > > onde estou tendo paradas (travamento da aplicacao)
      > devido "Locks"
      > > no
      > > > banco de dados. Ou seja, em tempos, a aplicacao trava e no
      > banco
      > > de
      > > > dados um lock travando os demais.
      > > > >
      > > > > Avaliando esta situacao, estou centrado na questão
      > > do "Isolamento
      > > > de banco". Pergunto:
      > > > >
      > > > > 1) Qual o nivel de isolamento padrão do hibernate (1, 2, 4 ou
      > > 8) ?
      > > > >
      > > > > 2) Muito embora alguns documentos indiquem o nivel 4, estou
      > > > tendendo para o nivel 2. Alguem já passou por isso?
      > > > >
      > > > > 3) É necessário a indicação explícita de autocommit=true ?
      > > > >
      > > > > Quem puder passar alguma experiencia, sugestão e/ou dicas,
      > > agradeço.
      > > > >
      > > > > Marco Antonio
      > > > >
      > > >
      > > >
      > > >
      > > >
      > > >
      > > >
      > > > ----------------------------------------------------------
      > > ----------
      > > >
      > > >
      > > > No virus found in this incoming message.
      > > > Checked by AVG Free Edition.
      > > > Version: 7.5.476 / Virus Database: 269.10.22/923 - Release
      > Date:
      > > 27/7/2007 18:01
      > > >
      > >
      > >
      > >
      > >
      > >
      > >
      > > ----------------------------------------------------------
      > ----------
      > >
      > >
      > > No virus found in this incoming message.
      > > Checked by AVG Free Edition.
      > > Version: 7.5.476 / Virus Database: 269.10.25/926 - Release Date:
      > 29/7/2007 23:14
      > >
      >
      >
      >
      >
      >
      >
      >------------------------------------------------------------------------------
      >
      >
      > No virus found in this incoming message.
      > Checked by AVG Free Edition.
      > Version: 7.5.476 / Virus Database: 269.11.0/929 - Release Date:
      >31/7/2007 17:26

      _________________________________________________________________
      MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br
    • Show all 15 messages in this topic