[英]Poor Performance Sqlite.net extensions
嗨,我正在開發Xamarin應用程序,該應用程序可以加載很多行(大約1萬行)
我的性能真的很差,比如插入對象的5K行需要2分鍾。
我使用InsertOrReplaceWithChildren:
public bool Insert_Update_Many<T>(List<T> obj)
{
try
{
lock (this.Lock) {
_connection.RunInTransaction(() => {
_connection.InsertOrReplaceAllWithChildren(obj, true);
});
}
return true;
}
catch (Exception ex)
{
Debug.WriteLine("[SQLITE_ERROR]: " + ex.ToString());
return false;
}
}
由於我添加了“ RunInTransaction”,因此有了改進(之前沒有超過5分鍾)。
我的對象包含關系船。
有什么辦法可以優化嗎?
在看不到實際代碼的情況下很難分辨,但是我遇到了一些可能影響性能的問題:
InsertOrReplace
性能很差 :嘗試調用簡單的Insert
語句而不是InsertOrReplace
。 在某些情況下,這可能會產生很大的影響。 update
操作 :這很容易解決,您可以自己分配外鍵,並在數據庫密集型操作上調用普通的SQLite.Net Insert
。 您可以使用WAL模式提高插入性能:
var journalMode = await globalConn.ExecuteScalarAsync<string>("PRAGMA journal_mode = wal");
這是一個建議:
嘗試使用原始查詢,或者實際上,首先分析代碼,也許其中存在瓶頸。
而且,如果您一無所獲,我想您只需要異步執行並讓用戶等待即可( 或將數據庫文件與您的應用一起交付 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.