【Laravel】php artisan schema:dump でマイグレーションファイルを圧縮したらテストが早くなるか試してみた
結論
マイグレーションの圧縮をしても速度はほぼ変わりませんでした。
というかプロジェクトの CI 環境では遅くなりました…
もちろん、うちの環境では、という話なのでマイグレーションファイルの数や内容によっては早くなることも十分あると思います。
一例としてみていただければ…
やったこと
行ったのはphp artisan schema:dump
を実行して、マイグレーションファイルをひとつにまとめました。
このコマンドを実行するとdatabase
以下にschema
というディレクトリが作成されそこにダンプファイルが保存されます。
マイグレーションファイルがまとまるので、追加したけど後で消したカラムなどはそもそも作られなくなる(そのカラムに関する記述がなくなる)ようです。
(なので、そういう無駄な処理がなくなった結果早くなるかな~と思ったのでしたが誤差でした😂)
pg_restore コマンドが必要
テストを流す際に躓いた点でほぼメインです。
皆さんご存知の通りテスト前にはマイグレーションが走り、テーブルを新たに作り直します。
ただ、マイグレーションの圧縮を行った場合、ダンプファイルがまず読み込まれることになります。
このダンプファイルを読み込むために Laravel 内部ではpg_restore
コマンドが呼ばれます ※ PostgreSQL の場合
当然、テストに使用している PHP のイメージにはそんなコマンドは含まれていませんでした。
今回は速度の検証だけだったので、暫定でテストを実行するのと同じコンテナに無理やりインストールさせました。
どのみち追加の処理が発生してしまうというわけです…
気になったのがpg_restore
はartisan
コマンドから呼ばれてしまうので、PHP(というかLaravel)が動くコンテナにpg_restore
がインストールされている必要があるということです。
(ダンプを読み込むだけであれば別のコンテナを立ち上げてとかできると思うのですが)
なにか良い方法があるんでしょうか。
感想
CI はちょっとでも早くしたいです…!
テストは件数もあってかなり時間を食っているので特に早くしたい…!
とりあえず並列テストを設定しなかったことに今更気づいてしまったので来週は試してみたいと思います。