2013-02-25 2 views
1

나는 일부 통계의 통계를 저장하는 데 사용되는 HSQLDB 데이터베이스를 가지고 있습니다. 통계는 같은 스레드에서 매초마다 도착할 것으로 예상되지만 몇 초마다 (스레드 풀에서) 몇 가지 다른 스레드에서 가져올 수 있습니다. 내 질문은 사소한 소리를 할 수 있도록임베디드 HSQLDB 데이터베이스에 대한 다중 스레드 액세스

나는, JDBC와 많은 경험을 가지고 있지 않습니다

  1. 매 초마다 새로운 연결을 폐기/생성의 가격은 무엇입니까

    ? 데이터베이스가 임베디드되어 TCP/IP가 포함되어 있지 않습니다.
  2. 매초마다 준비된 문장을 작성/처리하는 비용은 얼마입니까?

일부 삽입은 대량 삽입이며, 여기서는 addBatchexecuteBatch 준비 문을 사용하는 것이 좋습니다.

답변

0

연결 및 준비된 문을 다시 사용해보십시오.

이렇게하려면 각 스레드가 단일 연결을 가지며 각 연결은 준비된 문 집합을 다시 사용합니다. 작업 단위 (UOW)가 완료되었지만 닫히지 않은 후 연결이 확약됩니다. 앱이 닫히거나 작업이 완료되면 연결이 닫힙니다.

대량 삽입에는 executeBatch를 사용해야합니다.

HSQLDB를 사용하면 매 초마다 새로운 연결/prepred 문을 생성/삭제하는 비용이 높지는 않지만 가능한 경우이 문제를 피하는 것이 좋습니다.

+0

수동으로 그러한 연결 풀을 구현해야합니까? 아니면 권장할만한 것이 있습니까? – mark

+0

작업을 수행하는 Runnable 클래스를 유지하도록 앱을 설계하십시오. 각 인스턴스는 연결을 유지하고 다시 사용할 수 있습니다. – fredt

+0

여기 ClientThread 예제를 참조하십시오 : http://hsqldb.svn.sourceforge.net/viewvc/hsqldb/base/trunk/src/org/hsqldb/test/TestBench.java?view=log – fredt

관련 문제