Browse Source

Run SQLite query planner optimization at shutdown/restart

Fernando Fernández 4 years ago
parent
commit
69baa9c467
1 changed files with 10 additions and 0 deletions
  1. 10 0
      Jellyfin.Server/Program.cs

+ 10 - 0
Jellyfin.Server/Program.cs

@@ -12,10 +12,12 @@ using System.Threading.Tasks;
 using CommandLine;
 using Emby.Server.Implementations;
 using Emby.Server.Implementations.IO;
+using Jellyfin.Server.Implementations;
 using MediaBrowser.Common.Configuration;
 using MediaBrowser.Common.Net;
 using MediaBrowser.Controller.Extensions;
 using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -221,6 +223,14 @@ namespace Jellyfin.Server
             finally
             {
                 appHost.Dispose();
+                _logger.LogInformation("Running query planner optimizations in the database... This might take a while");
+
+                // Run after disposing the application
+                using var context = new JellyfinDbProvider(appHost.ServiceProvider, appPaths).CreateContext();
+                if (context.Database.IsSqlite())
+                {
+                    context.Database.ExecuteSqlRaw("PRAGMA optimize");
+                }
             }
 
             if (_restartOnShutdown)