Wikipedia のテキストデータを使ってベンチマークをする! その5 Solr と MySQL でざっくり速度対決


せっかく Solr にデータが入ったので軽く検索速度の比較をしてみました。

比較してみたこと

  • Solr と MySQL それぞれで「ロボット」で検索する
    • ヒットする記事の数と記事10件の取得時間を調べる。
    • Solr、MySQL ともに設定パラメータはデフォルトのまま
    • Solr と MySQL は同じマシンで試す。

速度対決

  • Solr
    • ヒット数の取得と記事の取得は同時にできるのでクエリは一回実行するだけ。
    • 検索時間合計 約 0.4 秒( 0.376s )
q= page_title:ロボット OR rev_comment:ロボット OR  rev_user_text:ロボット
 OR old_text:ロボット
  • MySQL
    • ヒット数の取得と記事の取得は別に行う。ただし、ヒット数取得の直後だとキャッシュ効果によって記事取得時間はほとんど0秒。
    • ヒット数取得時間( SQL 応答時間 ) 約 53 秒 ( 52.422000s )
SELECT COUNT(*) FROM page,revision,text
WHERE page_id = rev_page AND rev_text_id = old_id
AND (page_title like '%ロボット%' OR rev_comment like '%ロボット%'
OR rev_user_text like '%ロボット%' OR old_text like '%ロボット%' )
SELECT page_id, rev_id, old_id, page_title, rev_comment, rev_user_text, old_text
FROM page,revision,text
WHERE page_id = rev_page AND rev_text_id = old_id
AND (page_title like '%ロボット%' OR rev_comment like '%ロボット%'
OR rev_user_text like '%ロボット%' OR old_text like '%ロボット%' )
LIMIT 10
    • 検索時間合計 約 53秒