2012-07-05 16 views
1

나는 특정 디렉토리에서 새 파일을 감시하는 Python 코드를 작성하고 cx_Oracle 모듈을 사용하여 데이터베이스에 새 파일을 삽입합니다. 이 프로그램은 서비스로 실행됩니다. 주어진 시간에 한 번에 많은 파일이 도착할 수 있지만 파일이 수신되지 않는 최대 1 시간의 기간이있을 수도 있습니다. 우수 사례 : 데이터베이스 연결을 무제한으로 유지하는 것이 좋지 않습니까? 한편으로는 좋은 생각이 아니라는 것을 알려주지 만 수신 된 모든 파일에 대해 새로운 데이터베이스 객체를 생성하고 이후에 닫는 데 많은 오버 헤드가 발생합니다. 특히 많은 파일을 한꺼번에 수신하는 경우 더욱 그렇습니다. 이 접근 방법에 대한 제안은 크게 감사 할 것입니다.데이터베이스 연결을 유지하는 것이 좋습니다 - 우수 사례입니까?

+1

끊임없이 열어 두는 것은 "공손한"것이 아닙니다. 삽입은 시적입니까? 그렇지 않은 경우 1 분 정도 캐시에 저장하고 매분마다 하나의 데이터베이스 작업 그룹을 수행 할 수 있습니다. 그렇지 않으면 잠시 동안 객체를 캐시하고 일부 비활성 후 닫을 수 있습니다. – Wug

답변

1

하나 또는 두 개의 연결 만 필요하면 무기한 열어 두어도 아무런 해가 없습니다.

오라클의 경우 새로운 연결을 생성하는 것이 MySQL과 같은 다른 데이터베이스와 달리 새 연결을 만드는 것이 비용이 많이 드는 작업입니다. 때로는 연결하는 데 몇 초가 걸릴 수도 있습니다. 연결을 너무 자주 닫고 열 경우 일부 응용 프로그램의 병목 현상이 될 수 있습니다.

오라클의 유휴 연결은 소량의 메모리를 사용하지만 유휴 상태에있는 동안 다른 리소스를 소비하지 않습니다.

DBA를 행복하게 유지하려면 유휴 연결이 많이 열려 있지 않은지 확인해야하지만, 1 ~ 2 개는 만족 스럽습니다.

관련 문제