<div dir="ltr"><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"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">## 記号を含む検索クエリのレスポンス長時間化<br><br>MariaDB + 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">https://kirorosuu.com/kiro-f2-04q</a>' IN BOOLEAN MODE);<br>```<br><br>```SQL<br>SELECT mroonga_command('select urls --match_columns url --query +https\\\\://<a href="http://kirorosuu.com/kiro-f2-04q">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 temporary`の箇所で時間がかかっていることまで判明しております。<br><br>## 添付ファイル<br><br>- `正常系_groonga.log`はレコード数を10万行に絞ったテーブルで全文検索したときのgroonga.log<br>- `異常系_groonga.log`はレコード数が1,000万行のオリジナルテーブルで全文検索したときのgroonga.log<br></div><div class="gmail_default" style="font-family:arial,sans-serif"><br></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>