PrimaryKey
parent
c9abf00c8c
commit
3b00eca43b
12
README.md
12
README.md
|
@ -144,9 +144,9 @@ php artisan queue:work --queue=default
|
|||
|
||||
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)
|
||||
- [MassUpdate1](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group1/MassUpdate1Task.php)
|
||||
- `using where`
|
||||
- [MassUpdate2](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group1/MassUpdate2Task.php)
|
||||
- [MassUpdate2](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group1/MassUpdate2Task.php)
|
||||
- `using whereIn`
|
||||
|
||||
### Result
|
||||
|
@ -175,13 +175,13 @@ Atualizar um campo ou mais, para o mesmo grupo.
|
|||
|
||||
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)
|
||||
- [MassUpdate3](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group2/MassUpdate3Task.php)
|
||||
- `using where`
|
||||
- [MassUpdate4](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate4Task.php)
|
||||
- [MassUpdate4](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group2/MassUpdate4Task.php)
|
||||
- `using case when`
|
||||
- [MassUpdate5](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate5Task.php) ([lib mass-update](https://github.com/johdougss/laravel-mass-update))
|
||||
- [MassUpdate5](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group2/MassUpdate5Task.php) ([lib mass-update](https://github.com/johdougss/laravel-mass-update))
|
||||
- `using values`
|
||||
- [MassUpdate6](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/MassUpdate/Group2/MassUpdate6Task.php)
|
||||
- [MassUpdate6](https://gitea.nteia.com/johdougss/laravel-performance/src/branch/main/app/Tasks/Mass/MassUpdate/Group2/MassUpdate6Task.php)
|
||||
- `using with select update`
|
||||
|
||||
### Result
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
namespace App\Console\Commands\Mass;
|
||||
|
||||
use App\Jobs\MassInsert;
|
||||
use App\Jobs\MassDelete;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
|
||||
|
@ -33,9 +31,9 @@ class MassDeleteCommand extends Command
|
|||
$count = (int)$this->option('count');
|
||||
|
||||
Bus::chain([
|
||||
(new MassDelete\MassDelete1Job($count)),
|
||||
(new MassDelete\MassDelete2Job($count)),
|
||||
(new MassDelete\MassDelete3Job($count)),
|
||||
(new \App\Jobs\Mass\MassDelete\MassDelete1Job($count)),
|
||||
(new \App\Jobs\Mass\MassDelete\MassDelete2Job($count)),
|
||||
(new \App\Jobs\Mass\MassDelete\MassDelete3Job($count)),
|
||||
])->dispatch();
|
||||
}
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
namespace App\Console\Commands\Mass;
|
||||
|
||||
use App\Jobs\MassInsert;
|
||||
use App\Jobs\Mass\MassInsert;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
namespace App\Console\Commands\Mass;
|
||||
|
||||
use App\Jobs\MassUpdate\Group1;
|
||||
use App\Jobs\MassUpdate\Group2;
|
||||
|
@ -35,18 +35,18 @@ class MassUpdateCommand extends Command
|
|||
private function group1(): void
|
||||
{
|
||||
Bus::chain([
|
||||
new Group1\MassUpdate1Job(),
|
||||
new Group1\MassUpdate2Job(),
|
||||
new \App\Jobs\Mass\MassUpdate\Group1\MassUpdate1Job(),
|
||||
new \App\Jobs\Mass\MassUpdate\Group1\MassUpdate2Job(),
|
||||
])->dispatch();
|
||||
}
|
||||
|
||||
private function group2()
|
||||
{
|
||||
Bus::chain([
|
||||
new Group2\MassUpdate3Job(),
|
||||
new \App\Jobs\Mass\MassUpdate\Group2\MassUpdate3Job(),
|
||||
// new Group2\MassUpdate4Job(),
|
||||
// new Group2\MassUpdate5Job(),
|
||||
new Group2\MassUpdate6Job(),
|
||||
new \App\Jobs\Mass\MassUpdate\Group2\MassUpdate6Job(),
|
||||
])->dispatch();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands\Mass;
|
||||
|
||||
use App\Jobs\MassUpsert;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
|
||||
class MassUpsertCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'app:mass-upsert
|
||||
{--count=100: number of rows inserted}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'mass upsert';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$count = (int)$this->option('count');
|
||||
|
||||
Bus::chain([
|
||||
(new \App\Jobs\Mass\MassUpsert\MassUpsert1Job($count)),
|
||||
(new \App\Jobs\Mass\MassUpsert\MassUpsert2Job($count)),
|
||||
])->dispatch();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands\PrimaryKey;
|
||||
|
||||
use App\Jobs\MassUpdate\Group1;
|
||||
use App\Jobs\MassUpdate\Group2;
|
||||
use App\Jobs\PrimaryKey\ProductsBigInt1Job;
|
||||
use App\Jobs\PrimaryKey\ProductsUuid1Job;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
|
||||
class PrimaryKeyCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'app:primary-key
|
||||
{--count=100: number of rows inserted}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'mass update';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$count = (int)$this->option('count');
|
||||
|
||||
Bus::chain([
|
||||
(new ProductsBigInt1Job($count)),
|
||||
(new ProductsUuid1Job($count)),
|
||||
])->dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassDelete;
|
||||
namespace App\Jobs\Mass\MassDelete;
|
||||
|
||||
use App\Tasks\MassDelete\MassDelete1Task;
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassDelete\MassDelete1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -20,7 +18,7 @@ class MassDelete1Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,11 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassDelete;
|
||||
namespace App\Jobs\Mass\MassDelete;
|
||||
|
||||
use App\Tasks\MassDelete\MassDelete1Task;
|
||||
use App\Tasks\MassDelete\MassDelete2Task;
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassDelete\MassDelete2Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -21,7 +18,7 @@ class MassDelete2Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,12 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassDelete;
|
||||
namespace App\Jobs\Mass\MassDelete;
|
||||
|
||||
use App\Tasks\MassDelete\MassDelete1Task;
|
||||
use App\Tasks\MassDelete\MassDelete2Task;
|
||||
use App\Tasks\MassDelete\MassDelete3Task;
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassDelete\MassDelete3Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -22,7 +18,7 @@ class MassDelete3Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -19,7 +18,7 @@ class MassInsert1Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassInsert\MassInsert2Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert2Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -20,7 +18,7 @@ class MassInsert2Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,11 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassInsert\MassInsert2Task;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert3Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -21,7 +18,7 @@ class MassInsert3Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,12 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassInsert\MassInsert2Task;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use App\Tasks\MassInsert\MassInsert4Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert4Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -22,7 +18,7 @@ class MassInsert4Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,13 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassInsert\MassInsert2Task;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use App\Tasks\MassInsert\MassInsert4Task;
|
||||
use App\Tasks\MassInsert\MassInsert5Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert5Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -23,7 +18,7 @@ class MassInsert5Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,14 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsert;
|
||||
namespace App\Jobs\Mass\MassInsert;
|
||||
|
||||
use App\Tasks\MassInsert\MassInsert1Task;
|
||||
use App\Tasks\MassInsert\MassInsert2Task;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use App\Tasks\MassInsert\MassInsert4Task;
|
||||
use App\Tasks\MassInsert\MassInsert5Task;
|
||||
use App\Tasks\MassInsert\MassInsert6Task;
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert6Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -24,7 +18,7 @@ class MassInsert6Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassInsertRelationship;
|
||||
namespace App\Jobs\Mass\MassInsertRelationship;
|
||||
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Jobs\MassInsertRelationship\InsertMassiveRelationship1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class InsertMassiveRelationship1Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group1;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group1;
|
||||
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate1Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group1\MassUpdate1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate1Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group1;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group1;
|
||||
|
||||
use App\Tasks\MassUpdate\Group1\MassUpdate2Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group1\MassUpdate2Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate2Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group2;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Tasks\MassUpdate\Group2\MassUpdate3Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group2\MassUpdate3Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate3Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group2;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Tasks\MassUpdate\Group2\MassUpdate4Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group2\MassUpdate4Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate4Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group2;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Tasks\MassUpdate\Group2\MassUpdate5Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group2\MassUpdate5Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate5Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\MassUpdate\Group2;
|
||||
namespace App\Jobs\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Tasks\MassUpdate\Group2\MassUpdate6Task;
|
||||
use App\Tasks\Mass\MassUpdate\Group2\MassUpdate6Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
@ -18,7 +18,7 @@ class MassUpdate6Job implements ShouldQueue
|
|||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600; //20min
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\Mass\MassUpsert;
|
||||
|
||||
use App\Tasks\Mass\MassUpsert\MassUpsert1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class MassUpsert1Job implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* The number of seconds the job can run before timing out.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct(public int $count)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
(new MassUpsert1Task())->handle($this->count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\Mass\MassUpsert;
|
||||
|
||||
use App\Tasks\Mass\MassUpsert\MassUpsert2Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class MassUpsert2Job implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* The number of seconds the job can run before timing out.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct(public int $count)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
(new MassUpsert2Task())->handle($this->count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\PrimaryKey;
|
||||
|
||||
use App\Tasks\Mass\MassDelete\MassDelete1Task;
|
||||
use App\Tasks\PrimaryKey\ProductsBigInt1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class ProductsBigInt1Job implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* The number of seconds the job can run before timing out.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct(public int $count)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
(new ProductsBigInt1Task())->handle($this->count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs\PrimaryKey;
|
||||
|
||||
use App\Tasks\Mass\MassDelete\MassDelete1Task;
|
||||
use App\Tasks\PrimaryKey\ProductsBigInt1Task;
|
||||
use App\Tasks\PrimaryKey\ProductsUuid1Task;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class ProductsUuid1Job implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* The number of seconds the job can run before timing out.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $timeout = 3600; //20min
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct(public int $count)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
(new ProductsUuid1Task())->handle($this->count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property int id
|
||||
* @property string name
|
||||
*/
|
||||
class ProductBigInt extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'products_big_int';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
];
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property int id
|
||||
* @property string name
|
||||
*/
|
||||
class ProductUuid extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public $incrementing = false;
|
||||
|
||||
protected $table = 'products_uuid';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
];
|
||||
|
||||
|
||||
}
|
|
@ -1,12 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassDelete;
|
||||
namespace App\Tasks\Mass\MassDelete;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert3Task;
|
||||
|
||||
class MassDelete1Task
|
||||
{
|
||||
|
@ -14,11 +11,11 @@ class MassDelete1Task
|
|||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,303 s DONE
|
||||
* 1000 ............ 2,000 s DONE
|
||||
* 10000 ........... 27,000 s DONE
|
||||
* 100000 .......... 149,000 s DONE (2m 29s)
|
||||
* 1000000 ......... 1644,000 s DONE (27m 24s)
|
||||
* 100 ............ 0,303 s DONE
|
||||
* 1_000 ............ 2,000 s DONE
|
||||
* 10_000 ........... 27,000 s DONE
|
||||
* 100_000 .......... 149,000 s DONE (2m 29s)
|
||||
* 1_000_000 ......... 1644,000 s DONE (27m 24s)
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
|
@ -1,12 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassDelete;
|
||||
namespace App\Tasks\Mass\MassDelete;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use Carbon\Carbon;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert3Task;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassDelete2Task
|
||||
{
|
||||
|
@ -14,11 +12,11 @@ class MassDelete2Task
|
|||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,018 s DONE
|
||||
* 1000 ............ 0,105 s DONE
|
||||
* 10000 ............ 0,938 s DONE
|
||||
* 100000 ........... 10,000 s DONE
|
||||
* 1000000 .......... 109,000 s DONE (1m 49s)
|
||||
* 100 ............ 0,018 s DONE
|
||||
* 1_000 ............ 0,105 s DONE
|
||||
* 10_000 ............ 0,938 s DONE
|
||||
* 100_000 ........... 10,000 s DONE
|
||||
* 1_000_000 .......... 109,000 s DONE (1m 49s)
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\Mass\MassDelete;
|
||||
|
||||
use App\Tasks\Mass\MassInsert\MassInsert3Task;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassDelete3Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,013 s DONE
|
||||
* 1_000 ............ 0,092 s DONE
|
||||
* 10_000 ............ 0,812 s DONE
|
||||
* 100_000 ............ 8,000 s DONE
|
||||
* 1_000_000 ........... 91,000 s DONE (1m 31s)
|
||||
*
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
DB::beginTransaction();
|
||||
(new MassInsert3Task())->handle($count);
|
||||
DB::rollBack();
|
||||
}
|
||||
}
|
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassInsert1Task
|
||||
{
|
||||
|
@ -12,11 +10,11 @@ class MassInsert1Task
|
|||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,166 s DONE
|
||||
* 1000 ............ 1,000 s DONE
|
||||
* 10000 ........... 13,000 s DONE
|
||||
* 100000 .......... 163,000 s DONE
|
||||
* 1000000 ..........1506,000 s DONE (25m 6s)
|
||||
* 100 ............ 0,166 s DONE
|
||||
* 1_000 ............ 1,000 s DONE
|
||||
* 10_000 ........... 13,000 s DONE
|
||||
* 100_000 .......... 163,000 s DONE
|
||||
* 1_000_000 ..........1506,000 s DONE (25m 6s)
|
||||
*
|
||||
* 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01');
|
||||
* - index, view materialized
|
|
@ -1,11 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use PHPUnit\Event\Runtime\PHP;
|
||||
|
||||
class MassInsert2Task
|
||||
{
|
||||
|
@ -13,11 +10,11 @@ class MassInsert2Task
|
|||
/**
|
||||
* insert multiple
|
||||
*
|
||||
* 100 ............ 0,015 s DONE
|
||||
* 1000 ............ 0,087 s DONE
|
||||
* 10000 ............ 0,789 s DONE
|
||||
* 100000 - SQLSTATE[HY000]: General error: 7 number of parameters must be between 0 and 65535
|
||||
* 1000000 - SQLSTATE[HY000]: General error: 7 number of parameters must be between 0 and 65535
|
||||
* 100 ............ 0,015 s DONE
|
||||
* 1_000 ............ 0,087 s DONE
|
||||
* 10_000 ............ 0,789 s DONE
|
||||
* 100_000 - SQLSTATE[HY000]: General error: 7 number of parameters must be between 0 and 65535
|
||||
* 1_000_000 - SQLSTATE[HY000]: General error: 7 number of parameters must be between 0 and 65535
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassInsert3Task
|
||||
{
|
||||
|
@ -21,11 +19,11 @@ class MassInsert3Task
|
|||
* insert into values ( ...), (....), ... 1000
|
||||
* commit
|
||||
*
|
||||
* 100 ............ 0,015 s DONE
|
||||
* 1000 ............ 0,087 s DONE
|
||||
* 10000 ............ 0,795 s DONE
|
||||
* 100000 ............ 8,000 s DONE
|
||||
* 1000000 ........... 87,000 s DONE (1m 27s)
|
||||
* 100 ............ 0,015 s DONE
|
||||
* 1_000 ............ 0,087 s DONE
|
||||
* 10_000 ............ 0,795 s DONE
|
||||
* 100_000 ............ 8,000 s DONE
|
||||
* 1_000_000 ........... 87,000 s DONE (1m 27s)
|
||||
*
|
||||
* 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01');
|
||||
* - index, view materialized
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassInsert4Task
|
||||
|
@ -12,11 +11,11 @@ class MassInsert4Task
|
|||
/**
|
||||
* insert unit with transaction
|
||||
*
|
||||
* 100 ............ 0,044 s DONE
|
||||
* 1000 ............ 0,352 s DONE
|
||||
* 10000 ............ 3,000 s DONE
|
||||
* 100000 ........... 35,000 s DONE
|
||||
* 1000000 .......... 391,000 s DONE (6m 31s)
|
||||
* 100 ............ 0,044 s DONE
|
||||
* 1_000 ............ 0,352 s DONE
|
||||
* 10_000 ............ 3,000 s DONE
|
||||
* 100_000 ........... 35,000 s DONE
|
||||
* 1_000_000 .......... 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');
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassInsert5Task
|
||||
|
@ -12,10 +11,10 @@ class MassInsert5Task
|
|||
/**
|
||||
* insert unit block with transaction
|
||||
*
|
||||
* 100 ............ 0,040 s DONE
|
||||
* 1000 ............ 0,343 s DONE
|
||||
* 10000 ............ 3,000 s DONE
|
||||
* 100000 ........... 34,000 s DONE
|
||||
* 100 ............ 0,040 s DONE
|
||||
* 1_000 ............ 0,343 s DONE
|
||||
* 10_000 ............ 3,000 s DONE
|
||||
* 100_000 ........... 34,000 s DONE
|
||||
* 1000000
|
||||
*
|
||||
* 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01');
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassInsert;
|
||||
namespace App\Tasks\Mass\MassInsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassInsert6Task
|
||||
|
@ -21,11 +20,11 @@ class MassInsert6Task
|
|||
*
|
||||
* EXECUTE transactions_plan(23.44, '2023-01-05 00:00:00'::timestamp);
|
||||
*
|
||||
* 100 ............ 0,125 s DONE
|
||||
* 1000 ............ 1,000 s DONE
|
||||
* 10000 ........... 11,000 s DONE
|
||||
* 100000 .......... 147,000 s DONE
|
||||
* 1000000 ........ 1.250,000 s DONE (20m 50s)
|
||||
* 100 ............ 0,125 s DONE
|
||||
* 1_000 ............ 1,000 s DONE
|
||||
* 10_000 ........... 11,000 s DONE
|
||||
* 100_000 .......... 147,000 s DONE
|
||||
* 1_000_000 ........ 1.250,000 s DONE (20m 50s)
|
||||
*
|
||||
* @param mixed $count
|
||||
* @return void
|
|
@ -1,10 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group1;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group1;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassUpdate1Task
|
||||
{
|
||||
|
@ -12,10 +11,10 @@ class MassUpdate1Task
|
|||
* Atualiza o campo data e valor, uma transação por vez.
|
||||
* Atualizando de forma unitária com where('id', 1), where('id', 2).
|
||||
*
|
||||
* 1000 .......... 1s DONE
|
||||
* 10000 .......... 14s DONE
|
||||
* 100000 ....... 2m 36s DONE
|
||||
* 1000000 ...... 26m 10s DONE
|
||||
* 1_000 .......... 1s DONE
|
||||
* 10_000 .......... 14s DONE
|
||||
* 100_000 ....... 2m 36s DONE
|
||||
* 1_000_000 ...... 26m 10s DONE
|
||||
*/
|
||||
public function handle()
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group1;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group1;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
|
@ -11,10 +11,10 @@ class MassUpdate2Task
|
|||
* Atualiza o campo data e valor, mas passando todos os ids das transações,
|
||||
* Atualizando com where id in(1,2,3...).
|
||||
*
|
||||
* 1000 ...... 19.87ms DONE
|
||||
* 10000 ..... 149.19ms DONE
|
||||
* 100000 ........... 1s DONE
|
||||
* 1000000 .......... 15s DONE
|
||||
* 1_000 ...... 19.87ms DONE
|
||||
* 10_000 ..... 149.19ms DONE
|
||||
* 100_000 ........... 1s DONE
|
||||
* 1_000_000 .......... 15s DONE
|
||||
*/
|
||||
public function handle()
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group2;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
|
@ -11,10 +11,10 @@ class MassUpdate3Task
|
|||
* Atualiza o campo data e valor, mas o campo data será preenchido com um valor diferente para cada transação,
|
||||
* Atualizando de forma unitária com where('id', 1), where('id', 2).
|
||||
*
|
||||
* 1000 ........... 1s DONE
|
||||
* 10000 .......... 14s DONE
|
||||
* 100000 ....... 2m 44s DONE
|
||||
* 1000000 ...... 27m 10s DONE
|
||||
* 1_000 ........... 1s DONE
|
||||
* 10_000 .......... 14s DONE
|
||||
* 100_000 ....... 2m 44s DONE
|
||||
* 1_000_000 ...... 27m 10s DONE
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group2;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Database\UpdateMassive4;
|
||||
use App\Models\Transaction;
|
||||
|
@ -13,10 +13,10 @@ class MassUpdate4Task
|
|||
* Atualiza o campo data e valor, mas o campo data será preenchido com um valor diferente para cada transação,
|
||||
* Atualizando de forma multipla com MassUpdate
|
||||
*
|
||||
* 1000 ..... 85.32ms DONE
|
||||
* 10000 .... 737.00ms DONE
|
||||
* 100000 .......... 8s DONE
|
||||
* 1000000 ...... 1m 15s DONE
|
||||
* 1_000 ..... 85.32ms DONE
|
||||
* 10_000 .... 737.00ms DONE
|
||||
* 100_000 .......... 8s DONE
|
||||
* 1_000_000 ...... 1m 15s DONE
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group2;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
|
@ -13,10 +13,10 @@ class MassUpdate5Task
|
|||
* Atualiza o campo data e valor, mas o campo data será preenchido com um valor diferente para cada transação,
|
||||
* Atualizando de forma multipla com UpdateMassive2
|
||||
*
|
||||
* 1000 ..... 64.16ms DONE
|
||||
* 10000 .... 590.20ms DONE
|
||||
* 100000 .......... 7s DONE
|
||||
* 1000000 ......... 58s DONE
|
||||
* 1_000 ..... 64.16ms DONE
|
||||
* 10_000 .... 590.20ms DONE
|
||||
* 100_000 .......... 7s DONE
|
||||
* 1_000_000 ......... 58s DONE
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassUpdate\Group2;
|
||||
namespace App\Tasks\Mass\MassUpdate\Group2;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Carbon\Carbon;
|
||||
|
@ -11,10 +11,10 @@ class MassUpdate6Task
|
|||
{
|
||||
/**
|
||||
*
|
||||
* 1000 ........... 7s DONE
|
||||
* 10000 ......... - DONE
|
||||
* 100000 ......... . - DONE
|
||||
* 1000000 .......... - DONE
|
||||
* 1_000 ........... 7s DONE
|
||||
* 10_000 ......... - DONE
|
||||
* 100_000 ......... . - DONE
|
||||
* 1_000_000 .......... - DONE
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\Mass\MassUpsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassUpsert1Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 .......... DONE
|
||||
* 1_000 .......... DONE
|
||||
* 10_000 .......... DONE
|
||||
* 100_000 .......... DONE
|
||||
* 1_000_000 .......... DONE
|
||||
*
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
$i = 0;
|
||||
$transactions = Transaction::factory($count)->make(function () use (&$i) {
|
||||
return [
|
||||
'id' => ++$i,
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
DB::enableQueryLog();
|
||||
Transaction::query()->upsert($transactions->toArray(), ['id'], ['id', 'date', 'value']);
|
||||
DB::getQueryLog();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\Mass\MassUpsert;
|
||||
|
||||
use App\Models\Transaction;
|
||||
|
||||
class MassUpsert2Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 .......... DONE
|
||||
* 1_000 .......... DONE
|
||||
* 10_000 .......... DONE
|
||||
* 100_000 .......... DONE
|
||||
* 1_000_000 .......... DONE
|
||||
*
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
$i = 0;
|
||||
$transactions = Transaction::factory($count)->make(function () use (&$i) {
|
||||
return [
|
||||
'id' => ++$i,
|
||||
];
|
||||
});
|
||||
|
||||
// foreach ($transactions as $key => $transaction) {
|
||||
// $transaction->id = $key + 1;
|
||||
// }
|
||||
|
||||
// $exists = Transaction::query()
|
||||
// ->select(['id'])
|
||||
// ->whereIn('id', $transactions->pluck('id'))
|
||||
// ->get()
|
||||
// ->pluck('id');
|
||||
//
|
||||
// foreach ($transactions as $transaction) {
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\MassDelete;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MassDelete3Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,013 s DONE
|
||||
* 1000 ............ 0,092 s DONE
|
||||
* 10000 ............ 0,812 s DONE
|
||||
* 100000 ............ 8,000 s DONE
|
||||
* 1000000 ........... 91,000 s DONE (1m 31s)
|
||||
*
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
DB::beginTransaction();
|
||||
(new MassInsert3Task())->handle($count);
|
||||
DB::rollBack();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\PrimaryKey;
|
||||
|
||||
use App\Models\ProductBigInt;
|
||||
use App\Models\Transaction;
|
||||
|
||||
class ProductsBigInt1Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,021 s DONE
|
||||
* 1_000 ............ 0,048 s DONE
|
||||
* 10_000 ............ 0,285 s DONE
|
||||
* 100_000 ........... 2,000 s DONE
|
||||
* 1_000_000 ........... 3,000 s DONE
|
||||
*
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
$block = 1000;
|
||||
while ($count > 0) {
|
||||
|
||||
if ($count < $block) {
|
||||
$block = $count;
|
||||
}
|
||||
|
||||
$products = ProductBigInt::factory($block)->make();
|
||||
ProductBigInt::query()->insert($products->toArray());
|
||||
|
||||
|
||||
$count -= $block;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tasks\PrimaryKey;
|
||||
|
||||
use App\Models\ProductBigInt;
|
||||
use App\Models\ProductUuid;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ProductsUuid1Task
|
||||
{
|
||||
|
||||
/**
|
||||
* insert unit
|
||||
*
|
||||
* 100 ............ 0,011 s DONE
|
||||
* 1_000 ............ 0,041 s DONE
|
||||
* 10_000 ............ 0,348 s DONE
|
||||
* 100_000 ............ 3,000 s DONE
|
||||
* 1_000_000 ........... 30,000 s DONE
|
||||
*/
|
||||
public function handle(int $count): void
|
||||
{
|
||||
$block = 1000;
|
||||
while ($count > 0) {
|
||||
|
||||
if ($count < $block) {
|
||||
$block = $count;
|
||||
}
|
||||
|
||||
$products = ProductUuid::factory($block)->make(function () {
|
||||
return [
|
||||
'id' => Str::uuid(),
|
||||
];
|
||||
});
|
||||
|
||||
ProductUuid::query()->insert($products->toArray());
|
||||
|
||||
$count -= $block;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,10 +2,11 @@
|
|||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Category;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
|
||||
* @extends Factory<Category>
|
||||
*/
|
||||
class CategoryFactory extends Factory
|
||||
{
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\ProductBigInt;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @extends Factory<ProductBigInt>
|
||||
*/
|
||||
class ProductBigIntFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'name' => fake()->bothify('cat ##??')
|
||||
];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\ProductUuid;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @extends Factory<ProductUuid>
|
||||
*/
|
||||
class ProductUuidFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'name' => fake()->bothify('cat ##??')
|
||||
];
|
||||
}
|
||||
}
|
|
@ -2,11 +2,12 @@
|
|||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
|
||||
* @extends Factory<Transaction>
|
||||
*/
|
||||
class TransactionFactory extends Factory
|
||||
{
|
||||
|
@ -18,9 +19,8 @@ class TransactionFactory extends Factory
|
|||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
// 'id' => Str::uuid(),
|
||||
'date' => fake()->dateTimeBetween('-30 days'),
|
||||
'value' => fake()->numerify('####.##')
|
||||
'value' => fake()->numerify('####.##'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
|
||||
* @extends Factory<User>
|
||||
*/
|
||||
class UserFactory extends Factory
|
||||
{
|
||||
|
@ -31,7 +32,7 @@ class UserFactory extends Factory
|
|||
*/
|
||||
public function unverified(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
return $this->state(fn(array $attributes) => [
|
||||
'email_verified_at' => null,
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('products_big_int', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name', 20);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('products_big_int');
|
||||
}
|
||||
};
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('products_uuid', function (Blueprint $table) {
|
||||
$table->uuid('id')->primary();
|
||||
$table->string('name', 20);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('products_uuid');
|
||||
}
|
||||
};
|
|
@ -2,10 +2,8 @@
|
|||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use App\Tasks\MassInsert\MassInsert3Task;
|
||||
use App\Tasks\Mass\MassInsert\MassInsert3Task;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class TransactionSeeder extends Seeder
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue