From b44e727c203bda273d27c1eabf7ecaadb6403101 Mon Sep 17 00:00:00 2001 From: Johnathan Douglas Date: Mon, 17 Jul 2023 17:43:12 -0300 Subject: [PATCH] Delete --- README.md | 73 +++++++++++++++++----- app/Console/Commands/MassDeleteCommand.php | 59 +++++++++++++++++ app/Jobs/MassDelete/MassDelete1Job.php | 40 ++++++++++++ app/Jobs/MassDelete/MassDelete2Job.php | 41 ++++++++++++ app/Jobs/MassDelete/MassDelete3Job.php | 42 +++++++++++++ app/Tasks/MassDelete/MassDelete1Task.php | 40 ++++++++++++ app/Tasks/MassDelete/MassDelete2Task.php | 39 ++++++++++++ app/Tasks/MassDelete/MassDelete3Task.php | 30 +++++++++ app/Tasks/MassInsert/MassInsert3Task.php | 2 +- app/Tasks/MassInsert/MassInsert4Task.php | 2 +- app/Tasks/MassInsert/MassInsert6Task.php | 2 +- 11 files changed, 353 insertions(+), 17 deletions(-) create mode 100644 app/Console/Commands/MassDeleteCommand.php create mode 100644 app/Jobs/MassDelete/MassDelete1Job.php create mode 100644 app/Jobs/MassDelete/MassDelete2Job.php create mode 100644 app/Jobs/MassDelete/MassDelete3Job.php create mode 100644 app/Tasks/MassDelete/MassDelete1Task.php create mode 100644 app/Tasks/MassDelete/MassDelete2Task.php create mode 100644 app/Tasks/MassDelete/MassDelete3Task.php diff --git a/README.md b/README.md index 5466e35..d44f516 100755 --- a/README.md +++ b/README.md @@ -32,12 +32,12 @@ php artisan app:mass-insert --count=100 php artisan queue:work --queue=default ``` -[MassInsert1](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert1Task.php), -[MassInsert2](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert2Task.php), -[MassInsert3](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert3Task.php), -[MassInsert4](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert4Task.php), -[MassInsert5](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert5Task.php), -[MassInsert6](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert6Task.php) +- [MassInsert1](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert1Task.php) +- [MassInsert2](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert2Task.php) +- [MassInsert3](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert3Task.php) +- [MassInsert4](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert4Task.php) +- [MassInsert5](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert5Task.php) +- [MassInsert6](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassInsert/MassInsert6Task.php) ### Result @@ -77,14 +77,59 @@ php artisan queue:work --queue=default | 100.000 | Insert5 | 34 | | 100.000 | Insert6 | `2m 27s` 147 | -| quantity | method | time second | -|----------:|---------|------------:| -| 1.000.000 | Insert1 | 1952,320 | -| 1.000.000 | Insert2 | `error` | -| 1.000.000 | Insert3 | 950,000 | -| 1.000.000 | Insert4 | 950,000 | -| 1.000.000 | Insert5 | - | -| 1.000.000 | Insert6 | - | +| 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/example-update-massive/src/branch/main/app/Tasks/MassDelete/MassDelete1Task.php) +- [MassDelete2](https://gitea.nteia.com/johdougss/example-update-massive/src/branch/main/app/Tasks/MassDelete/MassDelete2Task.php) +- [MassDelete3](https://gitea.nteia.com/johdougss/example-update-massive/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 diff --git a/app/Console/Commands/MassDeleteCommand.php b/app/Console/Commands/MassDeleteCommand.php new file mode 100644 index 0000000..4946102 --- /dev/null +++ b/app/Console/Commands/MassDeleteCommand.php @@ -0,0 +1,59 @@ +option('count'); + + Bus::chain([ + (new MassDelete\MassDelete1Job($count)), + (new MassDelete\MassDelete2Job($count)), + (new MassDelete\MassDelete3Job($count)), + ])->dispatch(); + } +} + + + + + + + + + + + + + + + + + + diff --git a/app/Jobs/MassDelete/MassDelete1Job.php b/app/Jobs/MassDelete/MassDelete1Job.php new file mode 100644 index 0000000..74bd7ff --- /dev/null +++ b/app/Jobs/MassDelete/MassDelete1Job.php @@ -0,0 +1,40 @@ +handle($this->count); + } +} diff --git a/app/Jobs/MassDelete/MassDelete2Job.php b/app/Jobs/MassDelete/MassDelete2Job.php new file mode 100644 index 0000000..e302cc0 --- /dev/null +++ b/app/Jobs/MassDelete/MassDelete2Job.php @@ -0,0 +1,41 @@ +handle($this->count); + } +} diff --git a/app/Jobs/MassDelete/MassDelete3Job.php b/app/Jobs/MassDelete/MassDelete3Job.php new file mode 100644 index 0000000..68b5496 --- /dev/null +++ b/app/Jobs/MassDelete/MassDelete3Job.php @@ -0,0 +1,42 @@ +handle($this->count); + } +} diff --git a/app/Tasks/MassDelete/MassDelete1Task.php b/app/Tasks/MassDelete/MassDelete1Task.php new file mode 100644 index 0000000..7fb2ba9 --- /dev/null +++ b/app/Tasks/MassDelete/MassDelete1Task.php @@ -0,0 +1,40 @@ +handle($count); + + Transaction::query() + ->select([ + 'id', + ]) + ->where('id', '>', 0) + ->chunkById(1000, function ($transactions) { + foreach ($transactions as $transaction) { + Transaction::query() + ->where('id', '=', $transaction->id) + ->delete(); + } + }); + } +} diff --git a/app/Tasks/MassDelete/MassDelete2Task.php b/app/Tasks/MassDelete/MassDelete2Task.php new file mode 100644 index 0000000..378c739 --- /dev/null +++ b/app/Tasks/MassDelete/MassDelete2Task.php @@ -0,0 +1,39 @@ +handle($count); + + Transaction::query() + ->select([ + 'id', + ]) + ->where('id', '>', 0) + ->chunkById(1000, function ($transactions) { + /** @var Collection $transactions */ + Transaction::query() + ->whereIn('id', $transactions->pluck('id')) + ->delete(); + }); + } +} diff --git a/app/Tasks/MassDelete/MassDelete3Task.php b/app/Tasks/MassDelete/MassDelete3Task.php new file mode 100644 index 0000000..1d25a7a --- /dev/null +++ b/app/Tasks/MassDelete/MassDelete3Task.php @@ -0,0 +1,30 @@ +handle($count); + DB::rollBack(); + } +} diff --git a/app/Tasks/MassInsert/MassInsert3Task.php b/app/Tasks/MassInsert/MassInsert3Task.php index e468cd9..135ce8c 100644 --- a/app/Tasks/MassInsert/MassInsert3Task.php +++ b/app/Tasks/MassInsert/MassInsert3Task.php @@ -25,7 +25,7 @@ class MassInsert3Task * 1000 ............ 0,087 s DONE * 10000 ............ 0,795 s DONE * 100000 ............ 8,000 s DONE - * 1000000 + * 1000000 ........... 87,000 s DONE (1m 27s) * * 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01'); * - index, view materialized diff --git a/app/Tasks/MassInsert/MassInsert4Task.php b/app/Tasks/MassInsert/MassInsert4Task.php index 861d91a..0e2e7de 100644 --- a/app/Tasks/MassInsert/MassInsert4Task.php +++ b/app/Tasks/MassInsert/MassInsert4Task.php @@ -16,7 +16,7 @@ class MassInsert4Task * 1000 ............ 0,352 s DONE * 10000 ............ 3,000 s DONE * 100000 ........... 35,000 s DONE - * 1000000 + * 1000000 .......... 391,000 s DONE (6m 31s) * * 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01'); * 2. insert into transactions (id, value, date) values (2, 20, '2023-04-02'); diff --git a/app/Tasks/MassInsert/MassInsert6Task.php b/app/Tasks/MassInsert/MassInsert6Task.php index 5f9c19d..0f57a42 100644 --- a/app/Tasks/MassInsert/MassInsert6Task.php +++ b/app/Tasks/MassInsert/MassInsert6Task.php @@ -25,7 +25,7 @@ class MassInsert6Task * 1000 ............ 1,000 s DONE * 10000 ........... 11,000 s DONE * 100000 .......... 147,000 s DONE - * 1000000 .................. - DONE + * 1000000 ........ 1.250,000 s DONE (20m 50s) * * @param mixed $count * @return void