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

Re: [riojug] Re: Hibernate Isolation !?

Expand Messages
  • Marco Duarte
    Fábio, ... muito obrigado por sua ajuda e sugestões. Marco Antonio ... From: fabiolnmiranda To: riojug@yahoogroups.com Sent: Tuesday, July 31, 2007 5:06 PM
    Message 1 of 15 , Jul 31, 2007
    • 0 Attachment
      Fábio, ... muito obrigado por sua ajuda e sugestões.
       
      Marco Antonio
      ----- Original Message -----
      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.whenExhaust edAction" >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.NoCachePro vider</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 debugUnreturnedConn ectionStackTrace s:
      >
      > http://forum. hibernate. org/viewtopic. php?
      > p=2324954&sid= d173e756b9ba62a4 da397b01bf494556
      >
      > "set debugUnreturnedConn ectionStackTrace s 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
      > unreturnedConnectio nTimeout, 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
    • Cristiane Missias Cândido
      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
      Message 2 of 15 , Aug 1 4:33 AM
      • 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
      • Marco Duarte
        Oi, Cristiane, ... realmente não vi seu email! Muito obrigado por seu interesse em ajudar. Isso é mto legal! Entendi sua orientação e, em algums progs não
        Message 3 of 15 , Aug 1 5:17 PM
        • 0 Attachment
          Oi, Cristiane, ... realmente não vi seu email!
           
          Muito obrigado por seu interesse em ajudar. Isso é mto legal!
           
          Entendi sua orientação e, em algums progs não utilizei essa tecnica.
           
           
          Valeu!
          Marco Antonio
           
          ----- Original Message -----
          Sent: Wednesday, August 01, 2007 8:33 AM
          Subject: Re: [riojug] Re: Hibernate Isolation !?


          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@ dtecconsultoria. com.br>
          >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.whenExhaust edAction" >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.NoCachePro vider</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 debugUnreturnedConn ectionStackTrace s:
          > >
          > > http://forum. hibernate. org/viewtopic. php?
          > > p=2324954&sid= d173e756b9ba62a4 da397b01bf494556
          > >
          > > "set debugUnreturnedConn ectionStackTrace s 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
          > > unreturnedConnectio nTimeout, 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


          No virus found in this incoming message.
          Checked by AVG Free Edition.
          Version: 7.5.476 / Virus Database: 269.11.2/931 - Release Date: 1/8/2007 16:53
        • Marco Antonio Abreu
          Olá Marco, Trabalhei pouco com o MS SQL-Server, mas mesmo assim ele se apresentou com uma característica interessante, que talvez esteja acontecendo com
          Message 4 of 15 , Aug 2 5:44 AM
          • 0 Attachment
            Olá Marco,

            Trabalhei pouco com o MS SQL-Server, mas mesmo assim ele se apresentou com uma característica interessante, que talvez esteja acontecendo com você.  Uma vez desenvolvi uma aplicação que realizava inserção/atualização de informações em lote no banco a partir de fonte externa (XML, CVS, TXT, EDI).  Todas as vezes que rodava esta aplicação, mesmo no início das execuções ou quando eram apenas algumas poucas linhas, o banco fazia travamento por tabela nunca por registro.  Assim, logo no primeiro insert/update, a aplicação travava as tabelas atualizadas e as demais aplicações em execução ficavam paradas enquanto a minha não encerrava e, pelo menos uma vez, ocorreu um dead-lock.

            Na época falei com o DBA da empresa e ele me disse que o banco fazia o controle de travamento automaticamente, não havendo configuração para forçar uma ou outra estratégia (registro ou tabela).  Não sei se isso é realmente verdade, mas de qualquer forma pode ser a origem de seu problema.  Talvez valha a pena dar uma atenção a isso.

            A minha solução foi fazer processos quebrados, onde a cada 1000 linhas (se me lembro bem) fazia um commit e reiniciava a transação até terminar a importação.  Isso me atendeu, mas não sei se vai lhe atender.

            Espero ter ajudado.

            []'s,

            Marco Antonio Abreu
            IT Quality Systems
            mabreu@...
            http://www.itquality.com.br
            


            Cristiane Missias Cândido wrote:
            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
            
            
              
          • marcoduarte@dtecconsultoria.com.br
            Oi, Marco Abreu, Faz sentido sim, o q vc colocou. Acrescento que, todos os cuidados são poucos pois o uso de framework abstrai mtas acoes que não vemos e
            Message 5 of 15 , Aug 2 8:37 AM
            • 0 Attachment
              Oi, Marco Abreu,

              Faz sentido sim, o q vc colocou. Acrescento que, todos os cuidados "são poucos"
              pois o uso de framework abstrai mtas acoes que não vemos e nem sabemos (em
              alguns casos). Acrescentando ao uso do framework (hibernate), o SGBD, que tb
              tem suas proprias acoes (p.ex.locks), ficamos com serios problemas se, "tudo
              isso" não for bem conhecido e tratado na aplicação.

              Por exemplo destaco: o controle de isolamento default no hibernate é o default
              do SGBD. Pelo menos no SQL Server, a especificação de isolamento é por
              transação. Só que, no Hibernate, a especificação é global. Até pode
              fazer sentido tendo em vista a finalidade do Hibernate ser abstrair o SGBD.
              Mas, para a aplicação é uma questão a ser tratada, se não, travamentos
              pode acontecer! (se eu não estiver enganado).

              Valeu por seu retorno.

              obrigado
              Marco Antonio Duarte




              ----- Mensagem de mabreu@... ---------
              Data: Thu, 02 Aug 2007 09:44:39 -0300
              De: Marco Antonio Abreu <mabreu@...>
              Endereço para Resposta (Reply-To): riojug@yahoogroups.com
              Assunto: Re: [riojug] Re: Hibernate Isolation !?
              Para: riojug@yahoogroups.com


              > Olá Marco,
              >
              > Trabalhei pouco com o MS SQL-Server, mas mesmo assim ele se apresentou
              > com uma característica interessante, que talvez esteja acontecendo com
              > você. Uma vez desenvolvi uma aplicação que realizava
              > inserção/atualização de informações em lote no banco a partir de fonte
              > externa (XML, CVS, TXT, EDI). Todas as vezes que rodava esta aplicação,
              > mesmo no início das execuções ou quando eram apenas algumas poucas
              > linhas, o banco fazia travamento por tabela nunca por registro. Assim,
              > logo no primeiro insert/update, a aplicação travava as tabelas
              > atualizadas e as demais aplicações em execução ficavam paradas enquanto
              > a minha não encerrava e, pelo menos uma vez, ocorreu um dead-lock.
              >
              > Na época falei com o DBA da empresa e ele me disse que o banco fazia o
              > controle de travamento automaticamente, não havendo configuração para
              > forçar uma ou outra estratégia (registro ou tabela). Não sei se isso é
              > realmente verdade, mas de qualquer forma pode ser a origem de seu
              > problema. Talvez valha a pena dar uma atenção a isso.
              >
              > A minha solução foi fazer processos quebrados, onde a cada 1000 linhas
              > (se me lembro bem) fazia um commit e reiniciava a transação até terminar
              > a importação. Isso me atendeu, mas não sei se vai lhe atender.
              >
              > Espero ter ajudado.
              >
              > []'s,
              >
              > Marco Antonio Abreu
              > IT Quality Systems
              > mabreu@...
              > http://www.itquality.com.br
              >
              >
              >
              > Cristiane Missias Cândido wrote:
              >> 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
              >>
              >>
              >>
              >


              ----- Final da mensagem de mabreu@... -----
            Your message has been successfully submitted and would be delivered to recipients shortly.