[groonga-dev,01531] Re: mroongaラッパーモードにおける行数カウント高速化とorder by limit 高速化について

Zurück zum Archiv-Index

HAYASHI Kentaro hayas****@clear*****
2013年 7月 10日 (水) 10:57:44 JST


林です。
お世話になっております。

詳細な報告ありがとうございます!

ご質問の件1,2それぞれについてはこちらでも確認の上
回答させていただければと思います。

以上、宜しくお願いいたします。

On Tue, 9 Jul 2013 12:52:07 +0900
Naoya Murakami <visio****@gmail*****> wrote:

> お世話になっております。
> 村上と申します。
> 
> 現在、主にmysql5.5.14(spider、VPバンドル版)で
> mroonga3.05をMyISAMのラッパーモードで利用しています。
> 
> mariadb10.0.3、mysql5.6.12の性能を試してみたところ、mysql5.6.12のみ、
> 行数カウントが高速化されていることに気がつきました。
> 
> 以下のURLを参照すると、ラッパーモードにのみ、行数カウント高速化の項目が
> ありませんでしたので、ラッパーモードでは、行数カウント高速化が使えないと
> 認識していました。
> http://mroonga.org/ja/docs/userguide/storage.html
> http://mroonga.org/ja/docs/userguide/wrapper.html
> 
> <質問>
> 1.mysql5.5、mariadb10のラッパーモードでは、行数カウント高速化が利用できず、
> mysql5.6では、利用できるという認識で正しいでしょうか?
> また、今後もこれらのバージョンでは、行数カウントの高速化は使えないのでしょうか?
> 可能であれば、spiderが使える、mariadb10または、mysql5.5.14で行数カウント
> 高速化が使えると非常にうれしいです。
> 今後も行数カウントが使えない場合は、spiderをあきらめて、mysql5.6系を採用する
> ことも検討しています。
> 
> 2.上記URLを参照すると、order by limit の高速化の条件として、order byの指定が
> カラム(id含む)またはwhere句に指定したmatch...againstであるとありますが、
> 前者の条件が使える場合がわかりません。
> ここのカラムとは、FULLTEXTインデックスが張られたカラムのことでしょうか?
> それともそれ以外の主キー等のINDEXでもよいのでしょうか?
> 
> 当方の環境では、match...againstのソートの場合、高速化が有効になりますが、
> 主キーのソートでは、高速化が有効になりません。
> 
> <実行結果>
> 1.mysql5.5.14の場合、行数カウントが遅い。Mroonga_count_skipはインクリメントされる。(なお、mysql5.5.32、mariadb10.0.3も試してみましたが同様でした。)
> 
> mysql> select version();
> +-----------+
> | version() |
> +-----------+
> | 5.5.14    |
> +-----------+
> mysql> select count(*) from ftext_2003 where
> match(title,abstract,claims,description) against("装置") limit 1;
> +----------+
> | count(*) |
> +----------+
> |   279519 |
> +----------+
> 1 row in set (1 min 6.98 sec)
> mysql> SHOW STATUS LIKE 'Mroonga_count_skip';
> +--------------------+-------+
> | Variable_name      | Value |
> +--------------------+-------+
> | Mroonga_count_skip | 1     |
> +--------------------+-------+
> 1 row in set (0.00 sec)
> 
> ・mysql5.6.12の場合、行数カウントが早い。Mroonga_count_skipはインクリメントされる。
> mysql> select version();
> +-----------+
> | version() |
> +-----------+
> | 5.6.12    |
> +-----------+
> 1 row in set (0.00 sec)
> mysql> select count(*) from ftext_2003 where
> match(title,abstract,claims,description) against("装置") limit 1;
> +----------+
> | count(*) |
> +----------+
> |   279519 |
> +----------+
> 1 row in set (0.06 sec)
> mysql> SHOW STATUS LIKE 'Mroonga_count_skip';
> +--------------------+-------+
> | Variable_name      | Value |
> +--------------------+-------+
> | Mroonga_count_skip | 1     |
> +--------------------+-------+
> 1 row in set (0.00 sec)
> 
> 3.mysql5.6.12において、行数カウント高速化が効かないsqlにすると実行結果1とほぼ同じ秒数になる。Mroonga_count_skipはインクリメントされない。
> mysql> select count(*) from ftext_2003 where
> match(title,abstract,claims,description) against("装置") and kind = "A" limit
> 1;
> +----------+
> | count(*) |
> +----------+
> |   275901 |
> +----------+
> 1 row in set (1 min 11.53 sec)
> mysql> SHOW STATUS LIKE 'Mroonga_count_skip';
> +--------------------+-------+
> | Variable_name      | Value |
> +--------------------+-------+
> | Mroonga_count_skip | 1     |
> +--------------------+-------+
> 1 row in set (0.00 sec)
> 
> 4.mysql5.5.14において、match...againstでorder
> byすると、高速化が有効。Mroonga_fast_order_limitがインクリメントされる。
> 
> mysql> select pub_id,match(title,abstract,claims,description) against("装置")
> from ftext_2003 where match(title,abstract,claims,description)
> against("装置") order by match(title,abstract,claims,description)
> against("装置") desc limit 10;
> ・・・
> +--------------+------------------------------------------------------------+
> 10 rows in set (0.11 sec)
> 
> mysql> SHOW STATUS LIKE 'Mroonga_fast_order_limit';
> +--------------------------+-------+
> | Variable_name            | Value |
> +--------------------------+-------+
> | Mroonga_fast_order_limit | 1     |
> +--------------------------+-------+
> 1 row in set (0.00 sec)
> 
> 5.mysql5.5.14において、主キーの1つでorder
> byすると、高速化が有効にならない。Mroonga_fast_order_limitがインクリメントされない。
> 
> mysql> select pub_id,match(title,abstract,claims,description) against("装置")
> from ftext_2003 where match(title,abstract,claims,description)
> against("装置") order by pub_id desc limit 10;
> ・・・
> +--------------+------------------------------------------------------------+
> 10 rows in set (1 min 7.00 sec)
> 
> mysql> SHOW STATUS LIKE 'Mroonga_fast_order_limit';
> +--------------------------+-------+
> | Variable_name            | Value |
> +--------------------------+-------+
> | Mroonga_fast_order_limit | 1     |
> +--------------------------+-------+
> 1 row in set (0.00 sec)
> 
> 以上です。
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev


-- 
HAYASHI Kentaro <hayas****@clear*****>




groonga-dev メーリングリストの案内
Zurück zum Archiv-Index