nunomaduro / laravel-optimize-database
Publishes migrations that make your database production ready.
                                    Fund package maintenance!
                                                                            
                                                                                                                                        nunomaduro
                                                                                    
                                                                            
                                                                                                                                        Patreon
                                                                                    
                                                                            
                                                                                                                                        www.paypal.com/paypalme/enunomaduro
                                                                                    
                                                                
Installs: 17 518
Dependents: 0
Suggesters: 0
Security: 0
Stars: 257
Watchers: 4
Forks: 8
Open Issues: 5
pkg:composer/nunomaduro/laravel-optimize-database
Requires
- php: ^8.2.0
Requires (Dev)
- laravel/framework: ^11.18.1
- laravel/pint: ^1.17.0
- phpstan/phpstan: ^1.11.8
- rector/rector: ^1.2.2
- symfony/var-dumper: ^7.1.3
README
This package is a work-in-progress, therefore you should not use it in production - and always backup your database before requiring it through Composer.
This package provides a simple way to optimize your SQLite database in Laravel; it's a good starting point for production-ready SQLite databases. At the time of this writing, it applies the following settings:
 ┌───────────────────────────┬─────────────┬───────────┐
 │ Setting                   │ Value       │ Via       │
 ├───────────────────────────┼─────────────┼───────────┤
 │ PRAGMA auto_vacuum        │ incremental │ Migration │
 │ PRAGMA journal_mode       │ WAL         │ Migration │
 │ PRAGMA page_size          │ 32768       │ Migration │
 │ PRAGMA busy_timeout       │ 5000        │ Runtime   │
 │ PRAGMA cache_size         │ -20000      │ Runtime   │
 │ PRAGMA foreign_keys       │ ON          │ Runtime   │
 │ PRAGMA incremental_vacuum │ (enabled)   │ Runtime   │
 │ PRAGMA mmap_size          │ 2147483648  │ Runtime   │
 │ PRAGMA temp_store         │ MEMORY      │ Runtime   │
 │ PRAGMA synchronous        │ NORMAL      │ Runtime   │
 └───────────────────────────┴─────────────┴───────────┘
The settings are applied in two ways:
- Migration Stub - Applied via migration.
- Runtime Configuration - Applied at runtime, via service provider.
🚀 Installation
Requires PHP 8.2+, SQLite 3.46+ and Laravel 11.0+
You can install the package via Composer:
composer require nunomaduro/laravel-optimize-database
🙌 Usage
To get started optimizing your SQLite database, you need to run the following command:
php artisan db:optimize
At this point, the [Runtime] settings are applied automatically. However, you need to run the migration to apply the [Migration] settings:
php artisan migrate
Laravel Optimize Database was created by Nuno Maduro under the MIT license.
