以前に仕事でApacheのアクセスログでえらく時間がかかったので、Ubuntu の実機と、Docker で作ったコンテナで性能比較してみることにした。
完全にバージョン等が一致しているわけではないので参考程度だが、結構な差が生じていた。
データ入力先のテーブル定義
CREATE TABLE `access_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `domain` text NOT NULL, `ip` text NOT NULL, `date_time` datetime NOT NULL, `method_file` text NOT NULL, `status` text, `reffer` text, `agent` text NOT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `id` (`id`) )
Apacheのアクセスログを元に、上記の定義で作ったテーブルに対してINSERT文を実行。しめて1,376,860行。
ごく単純なSQLにしたので、INSERT文 × 1,376,860回を実行したことになる。.sqlファイルにまとめたINSET文を以下のコマンドで実行させ、実行前後でdateコマンドの結果をファイルに吐き出した。
$ date > result.log $ nohup sudo mysql -u USER -pPASSWORD DATABASE -f < ***.sql $ date >> result.log
ホスト機
Ubuntu 19.04 + MariaDB 10.3.13
START: 2019年 6月 6日 木曜日 23:03:02 JST
END: 2019年 6月 7日 金曜日 00:05:06 JST
所要時間: 1時間2分4秒
Dockerコンテナ
mariadb/server のDocker イメージを使用。(Ubuntu 18.04.01 LTS + MariaDB 10.3.13)
START: Thu Jun 6 16:05:53 UTC 2019
END: Fri Jun 7 08:25:05 UTC 2019
所要時間: 16時間19分12秒
・・・なんだ、この差は。