MySQLである程度大量のダミーデータをシュッと用意する
はじめに
先日まで自分のところにインターンを受け入れていました。
インターンでは簡単なWebアプリケーションを作れるようになってもらおうと、sinatra + MySQLで簡易instagramを作ってもらうお題を出しました
詳しい内容はこちら
docker-composeでSinatra + Nginx + MySQL を動かす時のハマりポイント
お題の一環でDBのIndexについての理解を深めてもらう課題を出しました。
そのため、ある程度多めのデータが必要になりました。
適当なscriptを書いて実行してもよかったのですが、今回は以前知人に教えてもらったツールを使って見ることにしました。
Percona-Lab/mysql_random_data_load
教えてもらったツールがこちら
Percona-Lab/mysql_random_data_load
テーブルの型情報をもとに適切なデータをinsertしてくれるツールで、releaseから自分の環境のビルドをダウンロードして実行するだけなので楽!!
$ mysql_random_data_load test contents 1000 --user root --host 0.0.0.0
INFO[2018-04-13T10:35:44+09:00] Starting
0s [====================================================================] 100%
INFO[2018-04-13T10:35:44+09:00] 1000 rows inserted
$ mysql_random_data_load test contents 100000 --user root --host 0.0.0.0
INFO[2018-04-13T10:37:37+09:00] Starting
8s [====================================================================] 100%
INFO[2018-04-13T10:37:47+09:00] 100000 rows inserted
自分の環境では10万件のデータ作成でも10秒ほどで完了した
結果はこんな感じ
mysql> select * from contents limit 10;
+----+------------+-----------------------------------------------------------------------------------+-------------------------------------------------------+---------------------+
| id | user_id | image_path | caption | created_at |
+----+------------+-----------------------------------------------------------------------------------+-------------------------------------------------------+---------------------+
| 1 | 583532949 | iusto tempora ipsum est omnis dolor rerum vero. | et nihil quos beatae enim. | 2018-03-12 08:08:19 |
| 2 | 725465688 | mollitia adipisci modi et! | aut nostrum cum neque. | 2017-09-17 02:02:25 |
| 3 | 1986796284 | iure id et quos officia sint natus velit maiores. | ea dolorum voluptas. | 2017-06-07 18:06:13 |
| 4 | 375346648 | dolorum aut dolorum aliquid quis et et ut sequi et. | accusantium et et aut amet voluptatibus. | 2017-05-22 08:08:40 |
| 5 | 712171837 | autem sit nulla odit voluptas eum deserunt aut corporis quia. | blanditiis quaerat modi qui id quia. | 2018-01-10 14:02:09 |
| 6 | 265597420 | praesentium provident omnis accusantium. | quis quia enim. | 2017-06-25 02:02:32 |
| 7 | 388609898 | incidunt molestiae nam assumenda velit ut est! | qui cum quo non maiores pariatur. | 2017-09-03 03:03:33 |
| 8 | 799937243 | quaerat nam necessitatibus officia optio asperiores beatae omnis voluptatem. | sit pariatur nesciunt ipsum doloremque est eum omnis. | 2017-08-01 23:11:59 |
| 9 | 578782601 | doloremque nisi quam facere consectetur est dicta. | eos est officiis placeat aut est! | 2018-04-11 03:03:16 |
| 10 | 1861295170 | consequuntur inventore molestiae autem repudiandae velit aut molestias voluptate! | qui harum aut dolores provident et tempora. | 2017-06-16 14:02:21 |
+----+------------+-----------------------------------------------------------------------------------+-------------------------------------------------------+---------------------+
10 rows in set (0.00 sec)
さいごに
ある程度ランダムなデータが入ってしまうのが許容できればサクッとダミーデータが生成できるのでオススメです
インターン生もindexの重要性について知れたようでよかったです
実践ハイパフォーマンスMySQL 第3版
posted with amazlet at 18.04.13
Baron Schwartz Peter Zaitsev Vadim Tkachenko
オライリージャパン
売り上げランキング: 301,805
オライリージャパン
売り上げランキング: 301,805