トランザクションタイムアウトとクエリタイムアウト
@megascus @yamadamn @btnrouge クエリータイムアウトはJDBCドライバのクエリ実行時のread timeoutであって時間になったらクエリを中断させる信号を送るわけではないと思います。DB側のデッドロックとかロックエスカレーションとか不測の事態の対策?
2012-03-30 08:21:25@yamadamn いや、ここまできたらベンダー依存っぽいので自分で調べますー。ありがとうございます。(というより実際cancelされてないのだから動くのだろうなぁ・・・・・)
2012-03-30 08:22:03@megascus @yamadamn MySQLだかojdbcだかの実装ではソケットのリードタイムアウト設定してるだけなのをコードで確認した気がします。6、7年前にw
2012-03-30 08:25:06@yusukey @yamadamn なんとw情報有難う御座います。デッドロックのお話もありましたが、さらにcancel待ちになったらアレなので実装として正しそうな気がしますねー。
2012-03-30 08:27:28てことは、queryTimeoutを設定したあと必要に応じてcancelを呼び出したければ自分で実装しないといけないってことか。どっちがいいのかは置いておいて。
2012-03-30 08:29:22@megascus @yusukey ちと後で調べてみますが、少なくともOracleDBのcancelは数年前では正しく動作していた覚えがあります。setQueryTimeoutとの関連もその際に改めて。
2012-03-30 08:40:09@megascus @yusukey "JDBC標準メソッドStatement.setQueryTimeoutは、Statement.cancelに依存します。" http://t.co/eDAsDKfk
2012-03-30 10:45:59@yusukey 検証してみないと確かなことは言えませんがキャンセルしてくれそうな気がします。"ネットワークとデータベースが正しく機能していることに依存" している必要はありますが、それ以外に明確な制限はうたわれてませんし。
2012-03-30 11:35:09@yamadamn まじっすかぁ…DB2のドキュメントを二人で漁ってたけど見つからず……しかし、javaがOracleになってからJavaの話なのかDB固有の話なのか区別が難しい(−_−;)
2012-03-30 14:40:05@megascus あ、ごめん。さっきのはOracle JDBCドライバのマニュアルの話なので、完全に実装依存だと思います。。やっぱりDB2の話だったか。
2012-03-30 14:41:34