update connection pooling

This commit is contained in:
Luke Pulverenti
2016-06-11 16:12:01 -04:00
parent 96b1ddfddf
commit da6e94396f
17 changed files with 1587 additions and 1472 deletions

View File

@@ -20,9 +20,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
Logger = logManager.GetLogger(GetType().Name);
}
protected Task<IDbConnection> CreateConnection(bool isReadOnly = false)
protected virtual async Task<IDbConnection> CreateConnection(bool isReadOnly = false)
{
return DbConnector.Connect(DbFilePath, false, true);
var connection = await DbConnector.Connect(DbFilePath, false, true).ConfigureAwait(false);
connection.RunQueries(new []
{
"pragma temp_store = memory"
}, Logger);
return connection;
}
private bool _disposed;

View File

@@ -53,12 +53,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
string[] queries = {
"create table if not exists userdisplaypreferences (id GUID, userId GUID, client text, data BLOB)",
"create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)",
//pragmas
"pragma temp_store = memory",
"pragma shrink_memory"
"create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)"
};
connection.RunQueries(queries, Logger);

View File

@@ -26,8 +26,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
throw new ArgumentNullException("dbPath");
}
logger.Info("Sqlite {0} opening {1}", SQLiteConnection.SQLiteVersion, dbPath);
var connectionstr = new SQLiteConnectionStringBuilder
{
PageSize = 4096,
@@ -39,7 +37,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
ReadOnly = isReadOnly
};
var connection = new SQLiteConnection(connectionstr.ConnectionString);
var connectionString = connectionstr.ConnectionString;
if (enablePooling)
{
connectionString += ";Max Pool Size=100";
}
//logger.Info("Sqlite {0} opening {1}", SQLiteConnection.SQLiteVersion, connectionString);
var connection = new SQLiteConnection(connectionString);
await connection.OpenAsync().ConfigureAwait(false);

View File

@@ -44,12 +44,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
string[] queries = {
"create table if not exists FileOrganizerResults (ResultId GUID PRIMARY KEY, OriginalPath TEXT, TargetPath TEXT, FileLength INT, OrganizationDate datetime, Status TEXT, OrganizationType TEXT, StatusMessage TEXT, ExtractedName TEXT, ExtractedYear int null, ExtractedSeasonNumber int null, ExtractedEpisodeNumber int null, ExtractedEndingEpisodeNumber, DuplicatePaths TEXT int null)",
"create index if not exists idx_FileOrganizerResults on FileOrganizerResults(ResultId)",
//pragmas
"pragma temp_store = memory",
"pragma shrink_memory"
"create index if not exists idx_FileOrganizerResults on FileOrganizerResults(ResultId)"
};
_connection.RunQueries(queries, Logger);

View File

@@ -45,12 +45,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
"create table if not exists userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)",
"create index if not exists idx_userdata on userdata(key)",
"create unique index if not exists userdataindex on userdata (key, userId)",
//pragmas
"pragma temp_store = memory",
"pragma shrink_memory"
"create unique index if not exists userdataindex on userdata (key, userId)"
};
connection.RunQueries(queries, Logger);

View File

@@ -52,9 +52,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
"create index if not exists idx_users on users(guid)",
"create table if not exists schema_version (table_name primary key, version)",
//pragmas
"pragma temp_store = memory",
"pragma shrink_memory"
};