Skip to content

Benchmarks

Tested on 1.7M rows of production data with MySQL 8.4.

Query Performance (ORDER BY id LIMIT 100)

Query TypeMatch RateMySQLMygramDBSpeedup
Ultra high-freq75% (1.28M rows)2,980ms92ms32x
High-freq47% (807K rows)1,876ms76ms25x
Medium-freq22% (375K rows)908ms49ms19x

COUNT Performance

Query TypeMySQLMygramDBSpeedup
Ultra high-freq2,891ms6.7ms431x
Low-freq124ms0.3ms413x

Concurrent Performance

LoadMySQLMygramDB
10 concurrent90% failed, QPS 0.4100% success, QPS 288
100 concurrentCannot execute100% success, QPS 372

Why MySQL FULLTEXT is Slow

  • Disk I/O: Scans B-tree pages from disk
  • No compression: Large posting lists
  • Cache dependency: 2-3x variance between cold/warm
  • Concurrency bottleneck: I/O contention under load

Why MygramDB is Fast

  • In-memory: Zero disk I/O
  • Compressed: Delta encoding + Roaring bitmaps
  • SIMD-accelerated: Fast bitmap operations
  • No warmup: Always ready

vs Elasticsearch

MygramDBElasticsearch
DeploymentSingle binaryCluster setup
Data syncDirect MySQL binlogETL required
LatencySub-80msHigher
ComplexityLowHigh
DistributedNoYes

See GitHub for details.

Released under the MIT License.