トランザクションタイムアウトとクエリタイムアウト

あとで勉強しておこうと思います.
1
山本ユースケ @yusuke

@megascus @yamadamn @btnrouge クエリータイムアウトはJDBCドライバのクエリ実行時のread timeoutであって時間になったらクエリを中断させる信号を送るわけではないと思います。DB側のデッドロックとかロックエスカレーションとか不測の事態の対策?

2012-03-30 08:21:25
ゆとり🇺🇦 @megascus

@yamadamn いや、ここまできたらベンダー依存っぽいので自分で調べますー。ありがとうございます。(というより実際cancelされてないのだから動くのだろうなぁ・・・・・)

2012-03-30 08:22:03
山本ユースケ @yusuke

@megascus @yamadamn MySQLだかojdbcだかの実装ではソケットのリードタイムアウト設定してるだけなのをコードで確認した気がします。6、7年前にw

2012-03-30 08:25:06
ゆとり🇺🇦 @megascus

@yusukey @yamadamn なんとw情報有難う御座います。デッドロックのお話もありましたが、さらにcancel待ちになったらアレなので実装として正しそうな気がしますねー。

2012-03-30 08:27:28
ゆとり🇺🇦 @megascus

てことは、queryTimeoutを設定したあと必要に応じてcancelを呼び出したければ自分で実装しないといけないってことか。どっちがいいのかは置いておいて。

2012-03-30 08:29:22
ゆとり🇺🇦 @megascus

まあ、普通はautocommit=falseを指定するだろうから結果には影響が出ないだろうけど。

2012-03-30 08:29:48
Takahiro YAMADA @yamadamn

@megascus @yusukey ちと後で調べてみますが、少なくともOracleDBのcancelは数年前では正しく動作していた覚えがあります。setQueryTimeoutとの関連もその際に改めて。

2012-03-30 08:40:09
Takahiro YAMADA @yamadamn

@megascus @yusukey "JDBC標準メソッドStatement.setQueryTimeoutは、Statement.cancelに依存します。" http://t.co/eDAsDKfk

2012-03-30 10:45:59
山本ユースケ @yusuke

@yamadamn おーおーおー!デッドロックしてる場合キャンセルってしてくれるんですかね・・・

2012-03-30 10:55:18
Takahiro YAMADA @yamadamn

@yusukey 検証してみないと確かなことは言えませんがキャンセルしてくれそうな気がします。"ネットワークとデータベースが正しく機能していることに依存" している必要はありますが、それ以外に明確な制限はうたわれてませんし。

2012-03-30 11:35:09
ゆとり🇺🇦 @megascus

@yamadamn まじっすかぁ…DB2のドキュメントを二人で漁ってたけど見つからず……しかし、javaがOracleになってからJavaの話なのかDB固有の話なのか区別が難しい(−_−;)

2012-03-30 14:40:05
Takahiro YAMADA @yamadamn

@megascus あ、ごめん。さっきのはOracle JDBCドライバのマニュアルの話なので、完全に実装依存だと思います。。やっぱりDB2の話だったか。

2012-03-30 14:41:34
ゆとり🇺🇦 @megascus

@yamadamn 普遍的に言えないというだけで十分です!これで依存させずに済みます。

2012-03-30 14:45:31
ゆとり🇺🇦 @megascus

@yamadamn ちなみに実装依存だというのはURLやらなんやらでわかったので大丈夫です。

2012-03-30 14:46:54