DBCP-다른 데이터베이스에 대한 validationQuery


84

DBCP 풀을 사용하고 testOnBorrowtestOnReturn 을 사용 하여 연결이 여전히 유효한지 테스트 하고 싶습니다 .
불행히도 나는 그것이 작동하도록 속성 validationQuery를 설정해야합니다.

질문 : validationQuery에는 어떤 값이 있어야합니까?

저도 알아요 : validationQuery는 적어도 하나의 행을 반환하는 SQL SELECT 문이어야합니다.

문제는 다양한 데이터베이스 (DB2, Oracle, hsqldb)를 사용한다는 것입니다.


validationQuery를 사용하면 성능이 저하되지 않습니까? 이 쿼리는 응용 프로그램이 올바른 모든 연결에 대해 실행됩니까?
yaswanth

답변:


207

모든 데이터베이스에 대해 하나의 validationQuery 만있는 것은 아닙니다. 각 데이터베이스에서 서로 다른 validationQuery를 사용해야합니다.

몇 시간 동안 인터넷 검색 및 테스트를 수행 한 후이 테이블을 수집했습니다.

데이터베이스 유효성 검사 쿼리 노트

  • HSQLDB -select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • 오라클 -select 1 from dual
  • DB2 -select 1 from sysibm.sysdummy1
  • mysql을 -select 1
  • 마이크로 소프트 SQL 서버 - select 1(SQL-서버 9.0, 테스트 10.5 [2008])
  • PostgreSQL을 -select 1
  • 앵그르 -select 1
  • 더비 -values 1
  • H2 -select 1
  • 파이어 버드 -select 1 from rdb$database

다양한 데이터베이스에 대한 블로그 유효성 검사 쿼리 에 이에 대해 썼습니다 .

미리 JDBC 드라이버에 따라 validationQuery를 반환하는 클래스의 예가 있습니다.

아니면 누구에게 더 나은 솔루션이 있습니까?


4
select 1은 postgresql에서도 유효합니다
Danubian Sailor 2013 년

select 1Microsoft SQL Server 2014-12.0.2000.8 (X64), 2014 년 2 월 20 일 20:04:26, Windows NT 6.1 <X64>의 Standard Edition (64 비트)에서도 작동합니다 (빌드 7601 : 서비스 팩 1) (하이퍼 바이저)

select 1Hive 및 Impala 용
davidemm

14

Connector / J 드라이버가있는 MySQL의 경우 서버에 ping을 보내고 더미 결과 집합을 반환하는 간단한 유효성 검사 쿼리가 있습니다. 유효성 검사 쿼리는 정확히 다음 문자열 일 수 있습니다 (또는 시작해야 함).

/* ping */

자세한 내용 은 MySQL 드라이버 설명서의 연결 확인을 참조하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.