sourcecode

데이터베이스 연결이 항상 열려 있어야 합니까, 아니면 필요할 때만 열려 있어야 합니까?

copyscript 2023. 11. 5. 14:56
반응형

데이터베이스 연결이 항상 열려 있어야 합니까, 아니면 필요할 때만 열려 있어야 합니까?

데이터베이스 연결이 필요한 부킷 플러그인(마인크래프트)이 있습니다.

데이터베이스 연결이 항상 열려 있어야 합니까, 아니면 필요할 때 열고 닫아야 합니까?

데이터베이스 연결은 필요한 경우에만 열려 있어야 하며 필요한 모든 작업을 수행한 후에 닫아야 합니다.코드 샘플:

  • 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
    

그러나 데이터베이스 연결을 수동으로 여는 것은 비용이 너무 많이 들기 때문에 인터페이스가 있는 Java로 표시되는 데이터베이스 연결 풀을 사용하는 것이 좋습니다.이렇게 하면 물리적 데이터베이스 연결이 처리되며, 이를 닫을 때(즉, 호출)Connection#close), 물리적 데이터베이스 연결은 SLEEP 모드로 유지되고 계속 열려 있습니다.

관련 Q/A:

데이터베이스 연결 풀링을 처리하는 몇 가지 도구:

필요한 것이 무엇인지에 따라 달라집니다.

연결을 만들려면 시간이 좀 걸리므로 데이터베이스에 자주 액세스해야 하는 경우 연결을 계속 열어 두는 것이 좋습니다.또한 필요한 경우 많은 사용자가 동시에 데이터베이스에 액세스할 수 있도록 풀을 만드는 것이 좋습니다.

이 연결을 몇 번만 사용해야 하는 경우, 연결을 계속 열어둘 수는 없지만, 데이터베이스에 액세스하려면 지연이 발생합니다.그래서 얼마 동안 연결을 열어둘 타이머를 만들 것을 제안합니다(연결 시간 초과).

각 쿼리 실행 후에는 연결을 닫아야 합니다.쿼리가 서로 걸려 있기 때문에 여러 쿼리를 동시에 실행해야 하는 경우도 있습니다."먼저 작업을 삽입한 후 직원에게 할당"과 같은 작업을 수행합니다.이때 동일한 트랜잭션에 대해 쿼리를 실행하고 커밋하면 오류가 발생하면 롤백합니다.JDBC에서는 기본적으로 자동 커밋이 사용되지 않습니다.예시

연결 풀링을 사용합니다.웹 애플리케이션을 개발하는 경우 앱 서버 연결 풀링을 사용합니다.앱 서버는 각 응용 프로그램에 대해 동일한 풀링을 사용하므로 한 지점에서 연결 수를 제어할 수 있습니다.Apache Tomcat Connection 풀링을 적극 권장합니다.예시

추가 정보로 연결, 문장 및 결과 집합.

1.연결을 닫으면 가까운 문장이나 결과 집합이 필요 없습니다.둘 다 자동으로 닫힙니다.

2.Statement를 닫으면 ResultSet도 닫힙니다.

3. 이런 트라이위드 resources를 사용한다면:

try (Connection con = ...) {
} catch (SQLException e) {
}

연결이 자동으로 닫힙니다.리소스 사용 시도에는 자동 닫기 가능한 개체가 필요하고 연결은 자동 닫기 가능하기 때문입니다.리소스 사용 시도에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

사실, 지원서를 어떻게 쓰느냐가 중요한 문제랍니다!그것은 예술이지만 슬프게도 모든 사람들이 마이크로소프트의 튜토리얼과 같은 좋은 연습을 위해 튜토리얼을 듣습니다.

코딩할 내용을 알고 있으면 응용프로그램의 평생 동안 연결을 열어 둡니다.그것은 간단합니다. 아침에 출근해야 해서가 아니라 매일 우리는 당신만을 위한 특별한 경로를 만들어야 합니다!당신은 다른 사람들처럼 그 길을 2~4번 가잖아요!교통을 판단하고 필요에 따라 2, 4, 6개의 루트를 만듭니다.만약 이 4개 혹은 6개의 노선으로 교통이 막히면, 당신은 기다려요!

해피 코딩.

필요한 경우에만 연결을 열어야 합니다.실제 필요하기 전에 열려 있으면 연결 풀에서 활성 연결이 하나 줄어듭니다.따라서 궁극적으로 애플리케이션 사용자에게 영향을 미칩니다.

따라서 필요한 경우에만 연결을 열고 프로세스가 완료된 후에 닫는 것이 항상 더 나은 방법입니다.

애플리케이션에서 예외가 발생하더라도 연결이 닫히도록 하는 마지막 블록 안에 연결 닫기 로직을 넣도록 항상 시도합니다.

finally
{
connection.close()
}

언급URL : https://stackoverflow.com/questions/18962852/should-a-database-connection-stay-open-all-the-time-or-only-be-opened-when-neede

반응형