2014-12-12 1 views
0

a.jar이 jdbc 프레임 워크를 사용하고 b.jar이 데이터베이스 연결을 위해 ibatis 프레임 워크를 사용하는 응용 프로그램을 가지고 있습니다. a.jar의 데이터베이스 작업은 큰 행을 갖는 것처럼 실행하는 데 10 분이 걸리기 때문에 b.jar의 데이터베이스 작성도 시간이 걸립니까?단일 응용 프로그램을위한 서로 다른 두 개의 데이터베이스 프레임 워크가 동일한 연결 객체를 공유 할 수 있습니까?

내 지식에 따르면 둘 다 서로 다른 연결 개체를 갖지만 때로는 b.jar에 대한 쿼리 실행으로 인해 a.jar에서 많은 쿼리가 실행되어 전체 jvm이 중단되는이 문제가 발생합니다. .

내 질문은 : 두 스레드가 걸려있는 프레임 워크는 동일한 연결 개체를 사용하고 있습니까? 제발 도와주세요, 우리는 생산에서 이러한 문제에 직면하고 있습니다.

답변

2

connection pool을 공유 할 수도 있습니다 (이는 각 응용 프로그램마다 고유 한 인스턴스가 있기 때문에 충분히 안전합니다). "a"에서 긴 쿼리를 실행하면 "b"의 쿼리는 "a"의 쿼리가 완료 될 때까지 중단 될 수 있으며 데이터베이스에있는 isolation level 트랜잭션이 무엇으로 설정되었는지에 따라 달라집니다 (데이터베이스를 공유 할 때 - 연결이 아닙니다. 하나의 응용 프로그램에서 수행하는 작업은 다른 응용 프로그램에서 자원을 가져올 수 있으며, 이는 발생한 것으로 보입니다.

+0

답장을 보내 주셔서 감사합니다. 최대 연결 수는 앱 서버에서 기본적으로 64이며, 따라서 우리는 서로 다른 연결을 사용하고 있으며이 두 개의 병에 대해 데이터베이스에서 독립적으로 작업을 수행하고 있습니다. 문제는 문제는 매우 드물기 때문에 한 달에 한 번씩 스레드가이 장기 실행 쿼리로 인해 매달 렸기 때문에 간헐적으로 일어나는 상황과 원인을 파악할 필요가 없습니다. – mahan07

+0

@pankaj 격리 수준을 확인하십시오. 당신을 위해 우리가 이것을 디버깅 할 수있는 충분한 정보를 제공하지 않았습니다. –

+0

나는 그것이 기본 read_commited가 될 것이라고 생각한다. – mahan07

관련 문제