目前做了一個專案需要處理最多大概700萬資料,需要將Oracle中的資料下載到Sqlite本地資料庫中再進行處理。其中有一個欄位存的是圖片需要提取特征值再存,其他欄位不變。
連接資料庫用的是ODBC,由于照片占記憶體太大,所以采用的是一次性先讀取身份證資訊到記憶體中,然后開8個執行緒根據身份證資訊一個一個讀取照片,然后提取特征值再存入sqlite中,全程只連接了一次,沒有釋放過資源,以前沒操作資料庫,對性能方面不了解,結果就是越來越慢,到了3萬多張就斷開連接或者貌似錯誤碼為10113的問題,明天去了看下。
-----首先想問下我這樣做是不是資源未釋放導致資源占滿,每次查詢都會占用資源么,比如所我反復執行
char sql[255] = { 0 };
sprintf_s(sql, "select EAZ157 from EZ16 where EAZ140='%s'", card_id);
_RecordsetPtr pRst;
pRst = ExecuteWithResSQL(sql);
這一句,會有什么問題,是pRst需要釋放么還是別的什么
還有這個_RecordsetPtr只是指向查詢結果的首地址么,去獲取他的值得時候還要再查詢一次,還是直接就已經把所有資料讀取到記憶體了 ,這個不太明白
還有就是關于建索引的問題,單獨查詢某一個可定是可以快不少這個知道,但是對于這樣一句
select * from test建索引和不建索引有沒區別
然后就是打算修改成直接分塊查詢處理,比如直接分8塊,建立8個連接,8個執行緒去讀取,讀完直接處理,然后直接存入sqlite中這樣做可不可以。(先不考慮存入sqlite中的問題,一個弄明白了另一個就好辦了,也查了蠻多但是比較愚笨還是需要大家指點才行)
----------------------------------------------求大神,一直用qq號登CSDN,今天突然讓我驗證手機號,而我手機號已經換了害我又重新注冊一個,這個號貌似一個大洋都木有------------------------------------------------------------------------------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61486.html
標籤:數據庫及相關技術
