sql >> Databasteknik >  >> RDS >> Mysql

Ska en databasanslutning vara öppen hela tiden eller bara öppnas när det behövs?

Databasanslutningen måste endast öppnas när den behövs och stängas efter att ha utfört alla nödvändiga jobb med den. Kodexempel:

  • Före Java 7:

      Connection con = null;
      try {
          con = ... //retrieve the database connection
          //do your work...
      } catch (SQLException e) {
          //handle the exception
      } finally {
          try {
              if (con != null) {
                  con.close();
              }
          } catch (SQLException shouldNotHandleMe) {
              //...
          }
      }
    
  • Java 7:

      try (Connection con = ...) {
      } catch (SQLException e) {
      }
      //no need to call Connection#close since now Connection interface extends Autocloseable
    

Men eftersom det är för dyrt att manuellt öppna en databasanslutning, rekommenderas det starkt att använda en databasanslutningspool , representerad i Java med DataSource gränssnitt. Detta kommer att hantera de fysiska databasanslutningarna åt dig och när du stänger det (dvs. anropar Connection#close ), kommer den fysiska databasanslutningen bara att vara i SLEEP-läge och fortfarande vara öppen.

Relaterad Q/A:

Några verktyg för att hantera databasanslutningspooling:



  1. Felsökning av SQL Server CPU-prestandaproblem

  2. MySQL-motsvarighet till DECODE-funktionen i Oracle

  3. Ändra Databas Collation, Ctype i Postgresql

  4. MySQL PÅ DUBLIKATNYCKELUPPDATERING för flera rader infoga i en enda fråga