laravel-performance/README.md

7.8 KiB

Install

create database example-update-massive

configure .env

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;

php artisan migrate:fresh --seed

Analyse Insert

php artisan app:mass-insert --count=100
php artisan queue:work --queue=default

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

php artisan app:mass-delete --count=100
php artisan queue:work --queue=default

Result

quantity method time seconds
100 Delete1 0,303
100 Delete2 0,018
100 Delete3 0,013
quantity method time seconds
1.000 Delete1 2,000
1.000 Delete2 0,105
1.000 Delete3 0,092
quantity method time seconds
10.000 Delete1 27,000
10.000 Delete2 0,938
10.000 Delete3 0,812
quantity method time seconds
100.000 Delete1 2m 43s 149
100.000 Delete2 10
100.000 Delete3 8
quantity method time second
1.000.000 Delete1 27m 24s 1644
1.000.000 Delete2 1m 49s 109
1.000.000 Delete3 1m 31s 91

Analyse Update

Grupo 1:

Atualizar um campo ou mais, para o mesmo grupo.

Result

quantity method time seconds
1.000 UpdateMassive1Job 1,00
1.000 UpdateMassive2Job 0,01
quantity method time seconds
10.000 UpdateMassive1Job 14,00
10.000 UpdateMassive2Job 0,14
quantity method time seconds
100.000 UpdateMassive1Job 2m 36s 156
100.000 UpdateMassive2Job 1
quantity method time seconds
1.000.000 UpdateMassive1Job 26m 10s 1570
1.000.000 UpdateMassive2Job 15

Grupo 2:

Atualizar um campo ou mais diferente para cada transação.

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 -