Add database optimise task (#3929)

* Add database optimise task
* Wrap errors
* US internationalisation
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
DingDongSoLong4
2023-07-28 03:23:18 +02:00
committed by GitHub
parent 95a78de3aa
commit 4961c967ee
11 changed files with 146 additions and 10 deletions

View File

@@ -436,21 +436,28 @@ func (db *Database) RunMigrations() error {
}
// optimize database after migration
db.optimise()
err = db.Optimise(ctx)
if err != nil {
logger.Warnf("error while performing post-migration optimisation: %v", err)
}
return nil
}
func (db *Database) optimise() {
logger.Info("Optimizing database")
_, err := db.db.Exec("ANALYZE")
func (db *Database) Optimise(ctx context.Context) error {
logger.Info("Optimising database")
err := db.Analyze(ctx)
if err != nil {
logger.Warnf("error while performing post-migration optimization: %v", err)
return fmt.Errorf("performing optimization: %w", err)
}
_, err = db.db.Exec("VACUUM")
err = db.Vacuum(ctx)
if err != nil {
logger.Warnf("error while performing post-migration vacuum: %v", err)
return fmt.Errorf("performing vacuum: %w", err)
}
return nil
}
// Vacuum runs a VACUUM on the database, rebuilding the database file into a minimal amount of disk space.
@@ -459,6 +466,12 @@ func (db *Database) Vacuum(ctx context.Context) error {
return err
}
// Analyze runs an ANALYZE on the database to improve query performance.
func (db *Database) Analyze(ctx context.Context) error {
_, err := db.db.ExecContext(ctx, "ANALYZE")
return err
}
func (db *Database) ExecSQL(ctx context.Context, query string, args []interface{}) (*int64, *int64, error) {
wrapper := dbWrapper{}