mysql サーバーでのクエリの最大実行時間を制限する方法を探しています。これは構成ファイルを介して実行できると考えましたがmy.cnf
、ドキュメントに関連するものは見つかりませんでした。これができるかどうか誰でも知っていますか?ありがとう。
4 に答える
アップデート
MySQL 5.7 では、クエリにMAX_EXECUTION_TIME
オプティマイザ ヒントを含めてSELECT
、指定した時間後にサーバーを終了するように指示できます。
私の知る限り、サーバー全体のタイムアウトを強制したい場合、またはSELECT
s 以外のクエリに関心がある場合は、元の答えが唯一の選択肢です。
元の答え
クエリをサーバーに送信して実行するときに、最大実行時間を指定する方法はありません。
ただし、データベースサーバーで毎秒実行される cron ジョブがあり、次のように接続して実行することは珍しくありません。
- プロセスリストを表示
- 希望する最大時間よりもクエリ時間が長いすべての接続を検索します
- これらのプロセスごとに KILL [プロセス ID] を実行します。
それまでの間、Twitter チームは、これを実装する MySQL への変更をリリースしました。
- Reduce unnecessary work through improved server-side statement timeout support. This allows the server to proactively cancel queries that run longer than a millisecond-granularity timeout.
http://engineering.twitter.com/2012/04/mysql-at-twitter.htmlおよびhttps://github.com/twitter/mysql/wiki/Statement-Timeoutを参照してください。
http://mysqlserverteam.com/server-side-select-statement-timeouts/
興味深いアップグレード。私はそれをチェックします:
「MySQL 5.7.4 では、最上位の読み取り専用 SELECT ステートメントに対して、ミリ秒単位で指定されたサーバー側の実行時間制限を設定する機能が導入されました」.
SET GLOBAL MAX_STATEMENT_TIME=1000;
SET SESSION MAX_STATEMENT_TIME=2000;
SELECT MAX_STATEMENT_TIME=1000 * FROM table;