訂正InnoDBは「転置インデックス」と書きましたがこれは誤りであり、InnoDBについても「完全転置インデックス」を採用しています。このことは下記のサイトにも明示されています。FTSまたMySQL公式ページでも「転置インデックス」とありますが、「単語のリスト、および単語ごとに、その単語が出現するドキュメントのリストが格納されます。」とあり、完全転置インデックスが採用されていることがわかります。インデックス以上のことからInnoDBもMroongaも「完全転置インデックス」を採用しており、パフォーマンスの差は他に原因があると思われます。記載した検証は実際に行って得られた結果であることは間違いないため、本記事の内容はMroongaの導入手順や、パフォーマンス比較の一例として参照いただければと思います。前回の記事で全文検索には「転置インデックス」と「完全転置インデックス」があり、InnoDBでは前者を利用しているがためフレーズ検索のパフォーマンスが悪化することに触れました。quotto.hatenablog.comそこで今回は後者の「完全転置インデックス」を使ったフレーズ検索でどの程パフォーマンス向上ができるのか、インストールから順を追って検証してみます。利用するストレージエンジンはMroongaです。MroongaはGroongaという全文検索エンジンをベースとした、MySQL用のストレージエンジンであり完全転置インデックスが使われます。X、MySQL5.7で検証しました。導入方法は公式サイトにプラットフォームごとの手順が掲載されています。documentationMacの場合は、homebrewでの導入となります。--use-homebrew-mysqlただしこの方法はhomebrewでMySQLとMroongaを同時にインストールする前提です。homebrew以外で導入したMySQLに対してMroongaだけをインストールする場合は、以下のとおりとなります。詳細は公式サイトのReadMeを参照。ENGINESで一覧に表示されます。|+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+もしここで一覧に表示されなければ、手動でプラグインのインストールを実行してみましょう。'ha_mroonga.so';※ここでエラーが出る場合は(例えば'ha_mroonga.so'が見つからないとか)最初のインストール手順からやり直してみましょう。ストレージエンジンをMroongaへ切り替えるMroongaが導入できたら、次はInnoDBをMroongaへ切替ます。TABLEで確認できます。TABLEで行えます。TABLEで確認すると、ENGINE=mroongaとなっています。|+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+パフォーマンスは改善されたのかそれでは早速、Mroonga(完全転置インデックス)でパフォーマンスが改善されているか確認してみます!ちなみにInnoDBでの400,00件データの中から「メロン」を含むデータを抽出するフレーズ検索は、12秒かかっていました。(詳細は冒頭で紹介した前回記事を参照。sec)ではMroongaではどうでしょう。sec)は、速い!!like検索に対してもパフォーマンス面では優位性を保っています。はてなブログPro学んだ技術まとめるはずが、仙台のことや日常のことを綴っているブログ。(1)スポンサーリンクはてなブログをはじめよう!WorldWorldWorldさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。