天天看點

視訊人臉識别EasyCVR平台添加sqlite資料庫,出現鎖死是什麼原因?

随着人工智能技術的快速發展,安防視訊監控平台也逐漸朝着智能化方向發展。EasyCVR平台也在加緊研發AI智能檢測分析技術與視訊平台的融合,包括人臉檢測、人臉識别、車牌識别、車輛檢測、行為分析等等。歡迎大家關注我們的更新。

視訊人臉識别EasyCVR平台添加sqlite資料庫,出現鎖死是什麼原因?

近期我們在測試EasyCVR功能時,添加資料出現了資料庫鎖死的情況,今天來和大家分享一下解決辦法。

我們近階段也一直在基于EasyCVR平台研發人臉識别,在實際開發中,研發人員在EasyCVR增加了AI識别的功能,需要儲存識别的資料。此前我們也和大家提及過,EasyCVR等平台預設使用的資料庫是sqlite資料庫。在寫資料庫時,有幾次可以寫入成功,但經常出現寫入失敗的情況,調試發現操作的資料庫被死了。

視訊人臉識别EasyCVR平台添加sqlite資料庫,出現鎖死是什麼原因?

經過了解得知,使用sqlite資料庫,在同一時刻隻能允許一個線程寫入資料庫,是以操作寫資料庫時,資料庫檔案是被鎖定的,其他時刻讀和寫已被阻塞。隻能等上個讀寫完成,才能進行下次的讀寫操作。如果上次的逾時超過5秒鐘(預設是5秒鐘),就會報“database is locked”錯誤。

是以研發在測試中遇到的上述問題,是因為沒有等待資料庫讀寫完成,或者是沒有送出到資料庫,是以才導緻資料庫一直在鎖定狀态,無法進行資料庫的下次操作。

于是檢查代碼,發現有一處沒有進行寫入資料庫,沒有送出到資料庫。是以資料庫一直在等待完成(鎖定狀态)。隻需要在此處加上commit進行送出到資料庫,即可解決。

視訊人臉識别EasyCVR平台添加sqlite資料庫,出現鎖死是什麼原因?