Qt中提高sqlite的讀寫速度

2021-06-27 08:52:49 字數 918 閱讀 4608

sqlite資料庫本質上來講就是乙個磁碟上的檔案,所以一切的資料庫操作其實都會轉化為對檔案的操作,而頻繁的檔案操作將會是乙個很好時的過程,會極大地影響資料庫訪問的速度。例如:向資料庫中插入100萬條資料,在預設的情況下如果僅僅是執行query.exec("insert into database(......) values(......)");就會開啟和關閉檔案100萬次,所以速度當然會很慢。sqlite資料庫是支援事務操作的,於是我們就可以通過事務來提高資料庫的讀寫速度。事務的基本原理是:資料庫管理系統首先會把要執行的sql語句儲存到記憶體當中,只有當commit()的時候才一次性全部執行所有記憶體中的資料庫。下面是乙個簡單的qt sqlite資料庫事務的例子:

int main(int argc, char *argv)

{qsqldatabase db_sqlite = qsqldatabase::adddatabase("qsqlite", "connsqlite");

db_sqlite.setdatabasename("sqlitedb.db3");

db_sqlite.open();

qsqlquery query("", db_sqlite);

bool bsuccess = false;

qtime tmptime;

// 開始啟動事務

db_sqlite.transaction();

tmptime.start();

for(int i = 0; i<100000; i++)

{ bsuccess = query.exec("insert into database(d_1,d_2,d_3,d_4,d_5) values('tt','tt','tt','tt','tt')");

if (!bsuccess)

{cout<<"error occur"《原文:

Qt中提高sqlite的讀寫速度

sqlite資料庫本質上來講就是乙個磁碟上的檔案,所以一切的資料庫操作其實都會轉化為對檔案的操作,而頻繁的檔案操作將會是乙個很好時的過程,會極大地影響資料庫訪問的速度。例如 向資料庫中插入100萬條資料,在預設的情況下如果僅僅是執行query.exec insert into database va...

Qt中提高SQLite的讀寫速度

sqlite資料庫本質上來講就是乙個磁碟上的檔案,所以一切的資料庫操作其實都會轉化為對檔案的操作,而頻繁的檔案操作將會是乙個很耗時的過程,會極大地影響資料庫訪問的速度。例如 向資料庫中插入100萬條資料,在預設的情況下如果僅僅是執行query.exec insert into database va...

提高sqlite效能的辦法

最近有個涉及到對sqlite操作的專案,由於對sqlite資料庫進行頻繁地 寫,讀,查詢 的操作,但是由於查詢這塊每次要取出大概10w條,這樣的耗時就非常大。因為sqlite的資料庫的操作需要加鎖 寫單獨乙個執行緒,讀又是乙個執行緒,查詢又是另乙個執行緒 這樣的話就存在3個執行緒搶一把鎖,但是因為查...