Skip to content

ベンチマーク

MySQL 8.4、170万件の本番データで測定しました。

検索性能(ORDER BY id LIMIT 100)

クエリタイプヒット率MySQLMygramDB高速化
超高頻度語75%(128万件)2,980ms92ms32倍
高頻度語47%(80万件)1,876ms76ms25倍
中頻度語22%(37万件)908ms49ms19倍

COUNT性能

クエリタイプMySQLMygramDB高速化
超高頻度語2,891ms6.7ms431倍
低頻度語124ms0.3ms413倍

並列性能

並列数MySQLMygramDB
109割失敗、QPS 0.4全成功、QPS 288
100実行不可全成功、QPS 372

MySQL FULLTEXTが遅い理由

  • ディスクI/O: 毎回B-treeをディスクから読む
  • 非圧縮: ポスティングリストがそのまま
  • キャッシュ頼み: コールド時は2〜3倍遅い
  • 並列に弱い: I/O競合で詰まる

MygramDBが速い理由

  • 全部メモリ: ディスクアクセスなし
  • 圧縮済み: デルタ + Roaringビットマップ
  • SIMD活用: ビットマップ演算を最適化
  • 暖機不要: 起動直後から本領発揮

Elasticsearchとの比較

項目MygramDBElasticsearch
導入バイナリ1つクラスタ構築
データ同期binlogで自動ETLが必要
レイテンシ80ms以下50〜500ms
運用コスト低い高い
分散なしあり

詳しくはGitHubをご覧ください。

Released under the MIT License.