1
我的sqlite數據庫很簡單:一個表,兩列。一列是圖像的URL,另一列是圖像的字節。Sqlite - 將插入操作阻止閱讀?
然後我有兩個線程。
一個線程(寫線程)正在下載一個非常大的圖像(比方說5MB)。當下載圖像時,線程將圖像的字節插入到db中。
另一個線程(讀線程)隨機查詢圖像,每循環1秒。
我的問題是:
請問「寫線程」阻塞「讀線程」有時候?
我已經設置了PRAGMA locking_mode=NORMAL
;
我有這個問題,因爲我遭受阻塞,並認爲如果我將locking_mode設置爲NORMAL,阻塞應該不存在。
我的意思是,我希望它可以是這樣的:我有一個後臺線程只是處理寫在最低優先級。然後即使插入花費很多時間,例如10秒,閱讀線程也不會受到影響。
有沒有辦法做到這一點?或者我缺少什麼?
感謝
我已經使用PRAGMA journal_mode = WAL。這是相同的。當數據庫變大時,比如說5G,每個插入可能花費2-10秒,然後讀取線程被阻塞,並掛在那裏 – Jack
您是否對所有線程使用相同的數據庫連接?如果是的話,你會阻止;你必須在每個線程中分別調用sqlite3_open。 –