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個執行緒搶一把鎖,但是因為查...