私は通常、tomcat jdbcプールからの優先検証クエリとして使用します。これは、結果1SELECT 1
が非常に高速な1行のみを返すためですが、今日、1つのひどい間違いを見つけました。
私のデータベースには、主キーを持つテーブルが1つしかないため、null許容型ではありません。このテーブルは時々削除され、アプリケーションの状況によって再び表示されます。そして、それが問題です。データベースへの接続を検証します。データベースはすでに稼働していますが、テーブルが欠落しているため、ひどい例外が発生します。SELECT 1
したがって、ソリューションは、データベースに存在する唯一のテーブルに対して1つの検証クエリを見つけることで合格します。また、アプリケーションのパフォーマンスが主要な目的の1つであるため、クエリをできるだけ高速にする必要があります。
明白なクエリよりも答えることができますが、このクエリはテーブルの行ごとに1SELECT 1 FROM THE_TABLE
を返すため、それほど速くはありません。
では、このテーブルへのより高速な検証クエリは何でしょうか?
編集
少なくとも1つの結果を返す必要がある場合、validation-queryはどのようにすべきですか?
commons-dbcpなどの一部のプール実装は、検証済みのクエリとして結果のないクエリを受け入れないため、これを尋ねます。