CORDEA blog

Android applications engineer

MySQLのMEMORYストレージエンジンを試してみる

はじめに

見ていて面白そうだったので試験的にMEMORYストレージエンジンを使用してみました。

MEMORYストレージエンジンはメモリ上にテーブルを作成するものです。
これにより、かなり処理が高速化されます。

MySQLのインストールは終わっているものとして書いて有ります。

 

手順

 
先にheap size等の設定を行います。
これはインメモリにする上で必須の設定です。

sudo vim /etc/my.cnf

 

my.cnfに次の記述を追加します。

max_heap_table_size=2G
tmp_table_size=2G

 

できたらrestartします。

sudo service mysqld restart

 

それが終わったらMySQLにログインして設定を行います。

set global tmp_table_size = 2147483648;
set global max_heap_table_size = 2147483648;

 

ここまでできたらtableを作成してみます。

create table in_memory (id varchar(16), chr varchar(8), index(id)) engine=memory;


 
ここらへんは適当に。

load data infile "/tmp/test.csv" into table in_memory fields terminated by ',';

 

簡単な速度計測

 
tableの情報はこんな感じです。

Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length
my_isam MyISAM 10 Dynamic 39706716 23 915841192 281474976710655 536508416
in_memory MEMORY 10 Fixed 39706716 27 1281039008 1207959534 640502960


 
で、計測結果ですが

Name Speed(sec)
my_isam 0.04
in_memory 0.00


 
正直なところ使うデータセットが悪かったので違いがわかりにくいですが、2-4倍程度の速度向上が見込めるかと思います。


 

最後に

サーバー再起動/クラッシュするとtableのデータが全て消えるので、実用できるかというと微妙なところですが、なかなかおもしろいと思います。