<div dir="ltr"><div class="gmail_default" style="font-family:arial,sans-serif">堀本様</div><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">承知しました。</div><div class="gmail_default" style="font-family:arial,sans-serif">よろしくお願いいたします。</div><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">増田</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">2022年5月23日(月) 18:53 Horimoto Yasuhiro <<a href="mailto:horim****@clear*****">horim****@clear*****</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">堀本です。<br>
<br>
ご報告ありがとうございます!<br>
<br>
現在調査中です、明日か明後日には回答できると思いますので<br>
もう少々お待ちください。<br>
<br>
From: 増田紘也 <<a href="mailto:koya.****@roote*****" target="_blank">koya.****@roote*****</a>><br>
Subject: [groonga-dev,04992] mroonga 記号を含む検索クエリのレスポンス長時間化<br>
Date: Fri, 20 May 2022 15:55:33 +0900<br>
<br>
> お世話になっております。増田と申します。<br>
> 表題の件について伺います。<br>
> <br>
> <br>
> ## 記号を含む検索クエリのレスポンス長時間化<br>
> <br>
> MariaDB +<br>
> Mroongaのストレージモードで利用しています。特定のテーブル、検索クエリで全文検索したときにレスポンスに10秒以上かかる現象が発生しました。テーブルのレコード数はおよそ1,000万行です。この事象が並列で飛ぶとメモリ利用率が高まり、DBがダウンしてしまいます。<br>
> 内部でも調査しましたが、原因究明に至らなかった為こちらで報告します。<br>
> <br>
> ### 環境<br>
> MariaDB 10.4.17<br>
> Mroonga 10.01<br>
> <br>
> ### テーブル定義(詳細は伏せてあります)<br>
> <br>
> ```SQL<br>
> CREATE TABLE `urls` (<br>
>   `id` int(11) NOT NULL AUTO_INCREMENT,<br>
>   `url` mediumtext DEFAULT NULL,<br>
>   PRIMARY KEY (`id`),<br>
>   FULLTEXT KEY `fulltext_url` (`url`)<br>
> ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;<br>
> ```<br>
> <br>
> ### 再現SQL<br>
> <br>
> ```SQL<br>
> SELECT `urls`.*<br>
> FROM `urls`<br>
> WHERE MATCH(urls.url) AGAINST('+<a href="https://kirorosuu.com/kiro-f2-04q" rel="noreferrer" target="_blank">https://kirorosuu.com/kiro-f2-04q</a>' IN<br>
> BOOLEAN MODE);<br>
> ```<br>
> <br>
> ```SQL<br>
> SELECT mroonga_command('select urls --match_columns url --query<br>
> +https\\\\://<a href="http://kirorosuu.com/kiro-f2-04q" rel="noreferrer" target="_blank">kirorosuu.com/kiro-f2-04q</a> --output_columns _id');<br>
> ```<br>
> <br>
> ### 検証したこと<br>
> <br>
> - Mroongaバージョンのアップグレード<br>
> Mroonga 12.02<br>
> MariaDB 10.4.24<br>
> にて同テーブルを用意して再現することを確認しました。<br>
> <br>
> - テーブルサイズ(レコード数)の変更<br>
> レコード数を10万に減らしたテーブルを用意し、再現テストを行いました。<br>
> その結果、10万レコードに減らしたテーブルでは再現しませんでした。<br>
> <br>
> <br>
> 正常系(レスポンスが1秒未満)、異常系(レスポンスが10秒以上)でのgroonga.logを比較したところ、異常系では`rehash<br>
> temporary`の箇所で時間がかかっていることまで判明しております。<br>
> <br>
> ## 添付ファイル<br>
> <br>
> - `正常系_groonga.log`はレコード数を10万行に絞ったテーブルで全文検索したときのgroonga.log<br>
> - `異常系_groonga.log`はレコード数が1,000万行のオリジナルテーブルで全文検索したときのgroonga.log<br>
> <br>
> <br>
> -----<br>
> 増田<br>
</blockquote></div>