2005年1月 7日
MDBにぎりっぱ
MS SQL鯖+WebLogicで動いているシステムをメンテしている。機能拡張で、他システムのMDB (MS AccessのDBファイル)を参照する必要があったので、ODBC&JDBCブリッジ経由で接続するようにした。
やっぱ、パフォーマンスを考えたらコネクション張りっ放しがいいかなぁと思ってチョロいプーリングのコードを書いた。preparedクエリも利用した。パフォーマンスは上がった。
しかーし、そのMDBは容量増大対策で、夜間に再構築していたのだが、ボクがにぎりっぱなので再構築に失敗。容量制限により新規レコード追加が行えない状態に!
MDBの再構築なんて知りませんよ。だいたいこの規模のシステムでMDBなんか使うなよ。と思うが、先方のボスに怒られた。○| ̄|_
WebLogic はデフォルトでコネクションプールもってますよ。
ステートメントもキャッシュされるので早いです。
http://www.beasys.co.jp/dev2dev/products/wlserver81/articles/Chapman_Gahir.html
本件はパフォーマンスが問題なのではなく、握りっぱなしが問題であるので、自作コネクションプールでもミドルウェアのコネクションプールでも同じ問題が発生します。意図的にコネクションプールを使わないようにしなければなりません。
現在、クエリ毎に接続-切断してます。しかし、たまにMDBがぶっ壊れていることがあるので、MSSQLにDTSでインポートしておこうかと考え中。
なるほど。
それなら MDB をアンデプロイした上でコネクションプールをサスペンドすれば良いかもしれません。
http://edocs.beasys.co.jp/e-docs/wls/docs81/ConsoleHelp/jdbc_connection_pools.html#306777
#また見当違いだったらごめんなさい
意図的に全体像の情報を少なく書いているので、最終的な解決策まで考えることはできないと思います。
MDBの、再構築が必要とか、再構築時には他の接続を切っておく必要があるとか、そういった特性を知ってもらえれば、それでOKです。