diff --git a/README.md b/README.md index c8c8de8..c602bb8 100755 --- a/README.md +++ b/README.md @@ -86,8 +86,6 @@ php artisan queue:work --queue=default | 1.000.000 | Insert5 | `6m 40s` 400 | | 1.000.000 | Insert6 | `20m 50s` 1.250 | - - # Analyse Delete ```shell @@ -135,115 +133,68 @@ php artisan queue:work --queue=default ## Grupo 1: -Atualizar um campo ou mais, mas o valor é o `mesmo` para um determinado grupo: +Atualizar um campo ou mais, para o mesmo grupo. -`Update1Job` - -```sql -update transactions -set date=now(), - value=1 -where id = 1; - -update transactions -set date=now(), - value=1 -where id = 2; - -update transactions -set date=now(), - value=1 -where id = 3; -... -``` - -`Update2Job` - -```sql -update transactions -set date=now(), - value=1 -where id in (1, 2, 3, . . .); -``` +- [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 | performance | -|----------:|-------------------|-------------------:|------------:| -| 1.000 | UpdateMassive1Job | 1,00s | - | -| 1.000 | UpdateMassive2Job | 0,01s | 100x | -| 10.000 | UpdateMassive1Job | 14,00s | - | -| 10.000 | UpdateMassive2Job | 0,14s | 100x | -| 100.000 | UpdateMassive1Job | (2m 36s) 156,00s | - | -| 100.000 | UpdateMassive2Job | 1,00s | 156x | -| 1.000.000 | UpdateMassive1Job | (26m 10s) 1570,00s | - | -| 1.000.000 | UpdateMassive2Job | 15,00s | 104x | +| 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, mas o valor é o `diferente` para cada registro: +Atualizar um campo ou mais diferente para cada transação. -`Update3Job` +- [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) -```sql -update transactions -set date='2023-04-01', - value=10 -where id = 1; +Group2/### Result -update transactions -set date='2023-04-02', - value=20 -where id = 2; +| quantity | method | time seconds | +|---------:|-------------------|-------------:| +| 1.000 | UpdateMassive3Job | 1,00 | +| 1.000 | UpdateMassive4Job | 0,08 | +| 1.000 | UpdateMassive5Job | 0,06 | +| 1.000 | UpdateMassive6Job | 7,00 | -update transactions -set date='2023-04-03', - value=30 -where id = 3; -``` +| quantity | method | time seconds | +|---------:|-------------------|-------------:| +| 10.000 | UpdateMassive3Job | 14,00 | +| 10.000 | UpdateMassive4Job | 0,73 | +| 10.000 | UpdateMassive5Job | 0,59 | +| 10.000 | UpdateMassive6Job | - | -`Update4Job` +| quantity | method | time seconds | +|---------:|-------------------|----------------:| +| 100.000 | UpdateMassive3Job | (2m 44s) 164,00 | +| 100.000 | UpdateMassive4Job | 8,00 | +| 100.000 | UpdateMassive5Job | 7,00 | +| 100.000 | UpdateMassive6Job | - | -```sql -update transactions -set date = case id when 1 then '2023-04-01'::date - when 2 then '2023-04-02'::date - when 3 then '2023-04-03'::date -end -, - value = case id when 1 then 10 - when 2 then 20 - when 3 then 30 -end -where id in (1, 2, 3); -``` - -`Update5Job` - -```sql -update transactions as t -set date = v.date, - value = v.value from ( - values (1, '2023-04-01'::date, 10), - (2, '2023-04-02'::date, 20), - (3, '2023-04-03'::date, 30) - ) as v(id, date, value) -where t.id = v.id; -``` - -### Result - -| quantity | method | time seconds | performance | -|----------:|-------------------|-------------------:|------------:| -| 1.000 | UpdateMassive3Job | 1,00s | - | -| 1.000 | UpdateMassive4Job | 0,08s | 12x | -| 1.000 | UpdateMassive5Job | 0,06s | 16x | -| 10.000 | UpdateMassive3Job | 14,00s | - | -| 10.000 | UpdateMassive4Job | 0,73s | 19x | -| 10.000 | UpdateMassive5Job | 0,59s | 23x | -| 100.000 | UpdateMassive3Job | (2m 44s) 164,00s | - | -| 100.000 | UpdateMassive4Job | 8,00s | 20x | -| 100.000 | UpdateMassive5Job | 7,00s | 23x | -| 1.000.000 | UpdateMassive3Job | (27m 10s) 1630,00s | - | -| 1.000.000 | UpdateMassive4Job | (1m 15s) 75,00s | 21x | -| 1.000.000 | UpdateMassive5Job | 58,00s | 28x | +| 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 | - |