Skip to content

MySQL vs. LevelDB

m1ch1 edited this page Jan 27, 2012 · 31 revisions

Introduction

The goal of this benchmark is to compare MySQL and LevelDB for disk I/O bound, multiple-reader/multiple-writer workload.

Configurations

Hardware

  • 2 x Xeon E5620 2.40GHz (HT enabled, 8 cores, 16 threads)
  • Memory: 4GB
  • Disk: RAID-10/2 == 4 × 300GB 15K rpm
  • RAID cache: 512MB
  • Disk cache: off

Operating System

  • RHEL Server 5.4, Linux 2.6.18-164.2.1.el5 x86_64, 64-bit

File System

  • XFS – noatime,logbufs=8,nobarrier

MySQL

  • MySQL Server 5.1.48 with XtraDB
  • innodb_buffer_pool_size = 2G
  • innodb_flush_log_at_trx_commit = 0
  • innodb_flush_method = ALL_O_DIRECT

LevelDB

  • svn revision r45
  • options.write_buffer_size = 500 * 1048576; // 500MB write buffer
  • options.block_cache = leveldb::NewLRUCache(1500 * 1048576); // 1.5GB cache
  • options.sync = false;

YCSB Workload

  • Use the same box as MySQL/LevelDB
  • Record size: 4KB
  • Number of records: 10 million
  • Number of client threads: 100
  • Read/Write ratio: 80/20

Results

Sequential Insert Performance

LevelDB gets higher throughput / lower latency overall, but MySQL is much more stable both in throughput and latency.

80% Read / 20% Update Performance

MySQL performs slightly better than LevelDB in this workload, but the difference is not very significant.




Comments?

Send me email at [email protected] or post your comments here if you have any questions/suggestions.