# Install create database `example-update-massive` configure `.env` ```dotenv DB_CONNECTION=pgsql DB_HOST=postgres DB_PORT=5432 DB_DATABASE=example-update-massive DB_USERNAME=default DB_PASSWORD=secret QUEUE_CONNECTION=database ITEMS_COUNT=10000 ``` `ITEMS_COUNT` é a variavel que irá definir quantos registros a fatory irá criar no banco de dados. run migrate; ```shell php artisan migrate:fresh --seed ``` # Analyse Insert ```shell php artisan app:mass-insert --count=100 php artisan queue:work --queue=default ``` - [MassInsert1](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert1Task.php) - [MassInsert2](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert2Task.php) - [MassInsert3](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert3Task.php) - [MassInsert4](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert4Task.php) - [MassInsert5](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert5Task.php) - [MassInsert6](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassInsert/MassInsert6Task.php) ### Result | quantity | method | time seconds | |---------:|---------|-------------:| | 100 | Insert1 | 0,166 | | 100 | Insert2 | 0,015 | | 100 | Insert3 | 0,015 | | 100 | Insert4 | 0,044 | | 100 | Insert5 | 0,040 | | 100 | Insert6 | 0,125 | | quantity | method | time seconds | |---------:|---------|-------------:| | 1.000 | Insert1 | 1,000 | | 1.000 | Insert2 | 0,087 | | 1.000 | Insert3 | 0,087 | | 1.000 | Insert4 | 0,352 | | 1.000 | Insert5 | 0,343 | | 1.000 | Insert6 | 1,000 | | quantity | method | time seconds | |---------:|---------|-------------:| | 10.000 | Insert1 | 13,000 | | 10.000 | Insert2 | 0,789 | | 10.000 | Insert3 | 0,795 | | 10.000 | Insert4 | 3,000 | | 10.000 | Insert5 | 3,000 | | 10.000 | Insert6 | 11,000 | | quantity | method | time seconds | |---------:|---------|-------------:| | 100.000 | Insert1 | `2m 43s` 163 | | 100.000 | Insert2 | `error` | | 100.000 | Insert3 | 8 | | 100.000 | Insert4 | 35 | | 100.000 | Insert5 | 34 | | 100.000 | Insert6 | `2m 27s` 147 | | quantity | method | time second | |----------:|---------|----------------:| | 1.000.000 | Insert1 | `25m 6s` 1506 | | 1.000.000 | Insert2 | `error` | | 1.000.000 | Insert3 | `1m 27s` 87 | | 1.000.000 | Insert4 | `6m 31s` 391 | | 1.000.000 | Insert5 | `6m 40s` 400 | | 1.000.000 | Insert6 | `20m 50s` 1.250 | # Analyse Delete ```shell php artisan app:mass-delete --count=100 php artisan queue:work --queue=default ``` - [MassDelete1](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassDelete/MassDelete1Task.php) - [MassDelete2](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassDelete/MassDelete2Task.php) - [MassDelete3](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassDelete/MassDelete3Task.php) ### Result | quantity | method | time seconds | |---------:|---------|-------------:| | 100 | Delete1 | 0,303 | | 100 | Delete2 | 0,015 | | 100 | Delete3 | 0,015 | | quantity | method | time seconds | |---------:|---------|-------------:| | 1.000 | Delete1 | 2,000 | | 1.000 | Delete2 | 0,087 | | 1.000 | Delete3 | 0,087 | | quantity | method | time seconds | |---------:|---------|-------------:| | 10.000 | Delete1 | 27,000 | | 10.000 | Delete2 | 0,789 | | 10.000 | Delete3 | 0,795 | | quantity | method | time seconds | |---------:|---------|-------------:| | 100.000 | Delete1 | `2m 43s` 149 | | 100.000 | Delete2 | `error` | | 100.000 | Delete3 | 8 | | quantity | method | time second | |----------:|---------|--------------:| | 1.000.000 | Delete1 | `2m 29s` 1506 | | 1.000.000 | Delete2 | `error` | | 1.000.000 | Delete3 | `1m 27s` 87 | # Analyse Update ## Grupo 1: Atualizar um campo ou mais, para o mesmo grupo. - [MassUpdate1](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group1/MassUpdate1Task.php) - [MassUpdate2](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group1/MassUpdate2Task.php) ### Result | quantity | method | time seconds | |---------:|-------------------|-------------:| | 1.000 | UpdateMassive1Job | 1,00s | | 1.000 | UpdateMassive2Job | 0,01s | | quantity | method | time seconds | |---------:|-------------------|-------------:| | 10.000 | UpdateMassive1Job | 14,00s | | 10.000 | UpdateMassive2Job | 0,14s | | quantity | method | time seconds | |---------:|-------------------|-----------------:| | 100.000 | UpdateMassive1Job | (2m 36s) 156,00s | | 100.000 | UpdateMassive2Job | 1,00s | | quantity | method | time seconds | |----------:|-------------------|-------------------:| | 1.000.000 | UpdateMassive1Job | (26m 10s) 1570,00s | | 1.000.000 | UpdateMassive2Job | 15,00s | ## Grupo 2: Atualizar um campo ou mais diferente para cada transação. - [MassUpdate3](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate3Task.php) - [MassUpdate4](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate4Task.php) - [MassUpdate5](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate5Task.php) - [MassUpdate6](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate6Task.php) ### Result | quantity | method | time seconds | |---------:|-------------------|-------------:| | 1.000 | UpdateMassive3Job | 1,00 | | 1.000 | UpdateMassive4Job | 0,08 | | 1.000 | UpdateMassive5Job | 0,06 | | 1.000 | UpdateMassive6Job | 7,00 | | quantity | method | time seconds | |---------:|-------------------|-------------:| | 10.000 | UpdateMassive3Job | 14,00 | | 10.000 | UpdateMassive4Job | 0,73 | | 10.000 | UpdateMassive5Job | 0,59 | | 10.000 | UpdateMassive6Job | - | | quantity | method | time seconds | |---------:|-------------------|----------------:| | 100.000 | UpdateMassive3Job | (2m 44s) 164,00 | | 100.000 | UpdateMassive4Job | 8,00 | | 100.000 | UpdateMassive5Job | 7,00 | | 100.000 | UpdateMassive6Job | - | | quantity | method | time seconds | |----------:|-------------------|------------------:| | 1.000.000 | UpdateMassive3Job | (27m 10s) 1630,00 | | 1.000.000 | UpdateMassive4Job | (1m 15s) 75,00 | | 1.000.000 | UpdateMassive5Job | 58,00 | | 1.000.000 | UpdateMassive6Job | - |