在 .NET CORE 中使用 Dapper 的 SQLite 查询速度极慢
Extremely slow SQLite query speed using Dapper in .NET CORE
我有一些代码可以从 .NET Core 2.0 中的本地 SQLite 数据库文件中提取 HTML 页面。
此代码在调试模式下运行良好,但在我发布应用程序后在生产环境中运行速度极慢。
我使用秒表来诊断是哪段代码导致了问题,发现 connection.QueryFirstOrDefault
在调试模式下需要 2 毫秒才能找到一行,但是在我发布后同样的任务需要 1.4 秒应用程序。这大约慢了 700 倍。
//initialize connection
var connection = new SqliteConnection("Data Source=" + dbName);
// Build SQL String
string query = @"SELECT *
FROM HtmlItems
WHERE PostID = 1;
// Start Timer
var watch = System.Diagnostics.Stopwatch.StartNew();
Submit query
HtmlItem = connection.QueryFirstOrDefault<HtmlItem>(query);
// End Timer
watch.Stop();
var result = watch.ElapsedMilliseconds();
查询映射到如下所示的对象
public class HtmlItem
{
public int PostID { get; set; }
public string PostTitle { get; set; }
public string PostDescription { get; set; }
public int PostDate { get; set; } // Unix Timestamp
public int Hidden { get; set; }
public string Url { get; set; }
public string PostHTML { get; set; }
}
调试和生产使用同一个数据库文件,这个数据库文件只有三行。我的应用程序应该是唯一尝试访问该文件的应用程序。
索引 SQLite 数据库文件似乎没有任何速度提升。
我想知道如何确定导致我与数据库的连接在生产中慢 700 倍的原因。
在同步读取文件时,SQLite 在 .net core 上使用 dapper 似乎不是很快。
如果您使用异步读取文件,那么它似乎要快得多。
HtmlItem = await connection.QueryFirstOrDefault<HtmlItem>(query);
我有一些代码可以从 .NET Core 2.0 中的本地 SQLite 数据库文件中提取 HTML 页面。
此代码在调试模式下运行良好,但在我发布应用程序后在生产环境中运行速度极慢。
我使用秒表来诊断是哪段代码导致了问题,发现 connection.QueryFirstOrDefault
在调试模式下需要 2 毫秒才能找到一行,但是在我发布后同样的任务需要 1.4 秒应用程序。这大约慢了 700 倍。
//initialize connection
var connection = new SqliteConnection("Data Source=" + dbName);
// Build SQL String
string query = @"SELECT *
FROM HtmlItems
WHERE PostID = 1;
// Start Timer
var watch = System.Diagnostics.Stopwatch.StartNew();
Submit query
HtmlItem = connection.QueryFirstOrDefault<HtmlItem>(query);
// End Timer
watch.Stop();
var result = watch.ElapsedMilliseconds();
查询映射到如下所示的对象
public class HtmlItem
{
public int PostID { get; set; }
public string PostTitle { get; set; }
public string PostDescription { get; set; }
public int PostDate { get; set; } // Unix Timestamp
public int Hidden { get; set; }
public string Url { get; set; }
public string PostHTML { get; set; }
}
调试和生产使用同一个数据库文件,这个数据库文件只有三行。我的应用程序应该是唯一尝试访问该文件的应用程序。
索引 SQLite 数据库文件似乎没有任何速度提升。
我想知道如何确定导致我与数据库的连接在生产中慢 700 倍的原因。
在同步读取文件时,SQLite 在 .net core 上使用 dapper 似乎不是很快。
如果您使用异步读取文件,那么它似乎要快得多。
HtmlItem = await connection.QueryFirstOrDefault<HtmlItem>(query);