[前][次][番号順一覧][スレッド一覧]

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]