mysql:8054
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Thu, 17 Jul 2003 19:26:58 +0900
Subject: [mysql 08054] Re: [Q] 時間のかかる join の結果を自動で停止させたい
とみたです。 On Wed, 16 Jul 2003 16:26:42 +0900 (JST) Takahide Nojima <nojima@xxxxxxxxxx> wrote: > [Q1] 時間のかかるSELECT文をユーザが誤って発行した際に、 > 一定時間経過するとmysqladmin kill processせずともQueryの処理が > 自動で止まるような手法/設定方法ってありますでしょうか? > [Q2] 一定時間経過で止まるという方法でなくても結構ですので、 > 何かの制限をmysqlに行えば、結果として時間のかかるSELECT文を > ユーザが誤って発行した場合でも暫くすればQueryの処理が自動で > 止まるような状態にすることは可能なのでしょうか? SQL_BIG_SELECTS とか MAX_JOIN_SIZE が使えないでしょうか。 http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_MySQL_Optimization.html#SET_OPTION SQL_BIG_SELECTS = 0 | 1 1 の場合、とても時間のかかる SELECT が実行された場合、 MySQL はそ れを中止します。これはあまり芳しくない(間違った) WHERE 構文が発行 されたときに役立ちます。 max_join_size 行以上を検討するような SELECT が大きなクエリと定義されます。新しい接続におけるこの値のデ フォルト値は 0 です。 (全ての SELECT 構文を許します) MAX_JOIN_SIZE = value | DEFAULT おそらく value よりも多いレコードの組合せを試験する必要があるよう な SELECTを許可しません。この値を設定することで、キーが使用されな いであろう SELECTと長い時間が掛かるであろう SELECT を捕捉できます。 これを DEFAULT 以外の値に設定すると、SQL_BIG_SELECTS フラグをリセッ トします。SQL_BIG_SELECTS フラグを再び設定すると、 SQL_MAX_JOIN_SIZE 変数は無視されます。-O max_join_size=#で mysqld を起動することで、この変数のデフォルト値を設定できます。T ver.4.0.3 未満では SQL_MAX_JOIN_SIZE オプションになります. Note that if the result of the query is already in the query cache, the above check will not be made. Instead, MySQL will send the result to the client. Since the query result is already computed and it will not burden the server to send the result to the client. -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
8046 2003-07-16 16:26 [Takahide Nojima <noj] [Q] 時間のかかる join の結果を自動で停止させたい -> 8054 2003-07-17 19:26 ┗[とみたまさひろ <tomm]