Screaming Loud

日々是精進

influxDBとMySQLの比較

influxDB

時系列用のデータベースとして作られています。
Goで書かれており、導入に際して特に依存しているものはありません。

用途

DevOpsのためのデータ計測の格納先としての利用です。

2013年に大きく盛り上がったinfluxDBを少し遊んでみようと思い、いくつか検証してみました。

検証方法としては、
パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres - C/pHeR Memo - Java とか。Eclipse とか。
を参考に実装してみました。

検証環境

MacOSX 10.10
CPU 2.6 GHz Intel Core i5
Mem 8 GB 1600 MHz DDR3

検証

MySQLとinfluxDBの速度差を測ってみました。
MySQLRDBなので、構造は違いますがどれくらい差があるのか知りたいため、やってみました。
PrimaryKeyで検索してしまうとIndexが効いてしまうので、
primarykeyを作らずに測ってみました。

1件ずつ100000件INSERT
MySQL
insert time:  0:00:07.345743
influxDB
insert time:  0:02:29.484344

influxDBのみ件数を変化させてINSERTしてみました。

100件毎にINSERT
influxDB
insert time:  0:02:28.335241
1000件毎にINSERT
influxDB
insert time:  0:02:29.858805

MySQLと比べるとかなり遅いです。
やはり構造化されていると速いですね。

SELECT

SELECTに関しては100000件だと終わる気配がなかったので、
10000件にして実験してみました。

id列で順番にINSERTそして検索
MySQL
insert time:  0:00:01.131586
select time:  0:00:36.415941
influxDB
insert time:  0:00:27.013549
select time:  0:12:22.012814

ランダム検索でも、MySQLの速さは実感できますね。

ちなみにPrimaryKeyにして、INSERTした際のMySQLのかかった時間。

MySQL
select time:  0:00:00.955273

はやっw

データ量

実データが格納されている容量を比較してみました。

du /usr/local/var/mysql/test
9.2M    .

du /usr/local/var/influxdb
 64K    influxdb//data/shard_db_v2/00001
 64K    influxdb//data/shard_db_v2/00002
 48K    influxdb//data/shard_db_v2/00003
1.3M    influxdb//data/shard_db_v2/00004
1.5M    influxdb//data/shard_db_v2
1.5M    influxdb//data
1.9M    influxdb//logs
4.0K    influxdb//raft/snapshot
 16K    influxdb//raft
4.0K    influxdb//wal
3.4M    influxdb/

コードは以下です。