laravel-performance
parent
8701e39717
commit
e25e030f3c
153
README.md
153
README.md
|
@ -86,8 +86,6 @@ php artisan queue:work --queue=default
|
||||||
| 1.000.000 | Insert5 | `6m 40s` 400 |
|
| 1.000.000 | Insert5 | `6m 40s` 400 |
|
||||||
| 1.000.000 | Insert6 | `20m 50s` 1.250 |
|
| 1.000.000 | Insert6 | `20m 50s` 1.250 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Analyse Delete
|
# Analyse Delete
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
@ -135,115 +133,68 @@ php artisan queue:work --queue=default
|
||||||
|
|
||||||
## Grupo 1:
|
## 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`
|
- [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)
|
||||||
```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, . . .);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Result
|
### Result
|
||||||
|
|
||||||
| quantity | method | time seconds | performance |
|
| quantity | method | time seconds |
|
||||||
|----------:|-------------------|-------------------:|------------:|
|
|---------:|-------------------|-------------:|
|
||||||
| 1.000 | UpdateMassive1Job | 1,00s | - |
|
| 1.000 | UpdateMassive1Job | 1,00s |
|
||||||
| 1.000 | UpdateMassive2Job | 0,01s | 100x |
|
| 1.000 | UpdateMassive2Job | 0,01s |
|
||||||
| 10.000 | UpdateMassive1Job | 14,00s | - |
|
|
||||||
| 10.000 | UpdateMassive2Job | 0,14s | 100x |
|
| quantity | method | time seconds |
|
||||||
| 100.000 | UpdateMassive1Job | (2m 36s) 156,00s | - |
|
|---------:|-------------------|-------------:|
|
||||||
| 100.000 | UpdateMassive2Job | 1,00s | 156x |
|
| 10.000 | UpdateMassive1Job | 14,00s |
|
||||||
| 1.000.000 | UpdateMassive1Job | (26m 10s) 1570,00s | - |
|
| 10.000 | UpdateMassive2Job | 0,14s |
|
||||||
| 1.000.000 | UpdateMassive2Job | 15,00s | 104x |
|
|
||||||
|
| 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:
|
## 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
|
Group2/### Result
|
||||||
update transactions
|
|
||||||
set date='2023-04-01',
|
|
||||||
value=10
|
|
||||||
where id = 1;
|
|
||||||
|
|
||||||
update transactions
|
| quantity | method | time seconds |
|
||||||
set date='2023-04-02',
|
|---------:|-------------------|-------------:|
|
||||||
value=20
|
| 1.000 | UpdateMassive3Job | 1,00 |
|
||||||
where id = 2;
|
| 1.000 | UpdateMassive4Job | 0,08 |
|
||||||
|
| 1.000 | UpdateMassive5Job | 0,06 |
|
||||||
|
| 1.000 | UpdateMassive6Job | 7,00 |
|
||||||
|
|
||||||
update transactions
|
| quantity | method | time seconds |
|
||||||
set date='2023-04-03',
|
|---------:|-------------------|-------------:|
|
||||||
value=30
|
| 10.000 | UpdateMassive3Job | 14,00 |
|
||||||
where id = 3;
|
| 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
|
| quantity | method | time seconds |
|
||||||
update transactions
|
|----------:|-------------------|------------------:|
|
||||||
set date = case id when 1 then '2023-04-01'::date
|
| 1.000.000 | UpdateMassive3Job | (27m 10s) 1630,00 |
|
||||||
when 2 then '2023-04-02'::date
|
| 1.000.000 | UpdateMassive4Job | (1m 15s) 75,00 |
|
||||||
when 3 then '2023-04-03'::date
|
| 1.000.000 | UpdateMassive5Job | 58,00 |
|
||||||
end
|
| 1.000.000 | UpdateMassive6Job | - |
|
||||||
,
|
|
||||||
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 |
|
|
||||||
|
|
Loading…
Reference in New Issue