やりたいこと
MySQL で重い可能性があるクエリを投げるときに、一定時間以上かかったら、タイムアウトとしてキャンセル用にしたい。
解決策
MySQL のシステム変数でタイムアウト関連の設定をいじるという手もあるが、max_execution_time
をオプティマイザヒント句に埋め込むことで簡単にクエリ単位で動作させられる。
SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM hoge_table;
max_execution_time
はミリ秒単位の数字で設定できる。
実行時間が超えてしまった場合には下記のようなエラーが返ってくる。
Error running query: Query execution was interrupted, maximum statement execution time exceeded
手軽に使えるので、とりあえず検証用とかでクエリを流したい場合なんかに活用できそう。