Mysqlサーバーでのクエリの最大実行時間を制限する方法を探しています。これはmy.cnf
構成ファイルを介して実行できると思いましたが、ドキュメントに関連するものが見つかりませんでした。これができるかどうか誰かが知っていますか?ありがとう。
実行するクエリをサーバーに送信するときに、最大実行時間を指定する方法はありません。
ただし、データベースサーバー上で毎秒実行されるcronジョブがあり、接続して次のようなことを行うことは珍しくありません。
次のようにクエリを使用できます。
SELECT MAX_STATEMENT_TIME=1000 * FROM table;
更新:代わりにmax_execution_timeを使用する必要があります。
SELECT /*+ MAX_EXECUTION_TIME(1000)*/ * FROM table;
MySQL 5.7.8では、MAX_STATEMENT_TIMEの名前がmax_execution_timeに変更されました。 http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time
その間に、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-)を参照してください。タイムアウト
http://mysqlserverteam.com/server-side-select-statement-timeouts/
興味深いアップグレード。私はそれをチェックします:
「MySQL5.7.4では、最上位の読み取り専用SELECTステートメントに対してサーバー側の実行時間制限をミリ秒単位で設定する機能が導入されています」。
SET GLOBAL MAX_STATEMENT_TIME=1000;
SET SESSION MAX_STATEMENT_TIME=2000;
SELECT MAX_STATEMENT_TIME=1000 * FROM table;