matsu4ki / mysql5.7-search-inspection

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MySQL5.7における検索の性能検証

mySQL5.7における、検索の検証を行う。 データ容量、速度の観点から判断する。 3つの実装方法で検討する。

  • Like検索
  • Like検索 + パーティショニング
  • 全文検索

それぞれについて、検索用のテーブルを作成し 数回ワード検索を行い、判断する。

注意事項

検索対象はVARCHAR型を想定していたが、wikipediaのデータはVARBINARY型だった。 VARBINARYとVARCHARのダミーデータを用意して比較してみたところ、VARBINARYの方が速度的に少し速い以外の差が見られなかったため、 本検証はVARBINARYのカラムで実施する。

計測方法

「Like」「Like + Partition」「Full Text Search」実装を行い、検索した際の

  • 総データ容量
    • docker ps -sのSIZE
  • 検索速度
    • SQL実行 - 返却まで

を計測する。 SIZEは、virtualのものと表示されているサイズの合計値で判断する docker/docs#1520 (comment)

データの取得方法

から、タイトル情報のダンプデータを取得する。 英語タイトルの量が多すぎるため、sedである程度量をカットしている。

wikiデータのテーブル説明は https://www.mediawiki.org/wiki/Manual:Page_table/ja に記載あり。

ライセンス等に関してはこちらを参照 https://ja.wikipedia.org/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%82%92%E4%BA%8C%E6%AC%A1%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B

パーティションについて

https://qiita.com/hit/items/3dea20c9f5872edc8909

About


Languages

Language:Ruby 93.3%Language:Dockerfile 6.7%