成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Qt 中如何提高Sqlite讀寫速度

移動開發(fā)
本文介紹的是在Qt 中如何提高Sqlite讀寫速度,SQLite數(shù)據(jù)庫是支持事務(wù)操作的,于是我們就可以通過事務(wù)來提高數(shù)據(jù)庫的讀寫速度。先來看詳細內(nèi)容。

Qt 中如何提高Sqlite讀寫速度 是本文要介紹的內(nèi)容,SQLite數(shù)據(jù)庫本質(zhì)上來講就是一個磁盤上的文件,所以一切的數(shù)據(jù)庫操作其實都會轉(zhuǎn)化為對文件的操作,而頻繁的文件操作將會是一個很好時的過程,會極大地影響數(shù)據(jù)庫存取的速度。例如:向數(shù)據(jù)庫中插入100萬條數(shù)據(jù),在默認的情況下如果僅僅是執(zhí)行query.exec("insert into DataBase(......) values(......)");就會打開和關(guān)閉文件100萬次,所以速度當然會很慢。SQLite數(shù)據(jù)庫是支持事務(wù)操作的,于是我們就可以通過事務(wù)來提高數(shù)據(jù)庫讀寫速度。事務(wù)的基本原理是:數(shù)據(jù)庫管理系統(tǒng)首先會把要執(zhí)行的sql語句存儲到內(nèi)存當中,只有當commit()的時候才一次性全部執(zhí)行所有內(nèi)存中的數(shù)據(jù)庫。下面是一個簡單的QT sqlite數(shù)據(jù)庫事務(wù)的例子:

  1. #include <QtCore/QCoreApplication> 
  2. #include <QtSql> 
  3. #include <iostream> 
  4.  
  5. using namespace std;  
  6.  
  7. int main(int argc, char *argv[])  
  8. {  
  9. QCoreApplication a(argc, argv);  
  10. QSqlDatabase    db_sqlite = QSqlDatabase::addDatabase("QSQLITE", "connSQLite");  
  11. db_sqlite.setDatabaseName("SQLiteDB.db3");  
  12. db_sqlite.open();  
  13. QSqlQuery   query("", db_sqlite);  
  14. bool    bsuccess = false;  
  15. QTime    tmpTime;  
  16.  
  17. // 開始啟動事務(wù)  
  18. db_sqlite.transaction();  
  19. tmpTime.start();  
  20. for(int i = 0; i<100000; i++)  
  21. {  
  22.    bsuccess = query.exec("insert into DataBase(D_1,D_2,D_3,D_4,D_5) values('TT','TT','TT','TT','TT')");  
  23.    if (!bsuccess)  
  24.    {  
  25.     cout<<"Error occur"<<endl;  
  26.     break;  
  27.    }  
  28. }  
  29. // 提交事務(wù),這個時候才是真正打開文件執(zhí)行SQL語句的時候  
  30. db_sqlite.commit();   
  31. cout<<"10000條數(shù)據(jù)耗時:"<<tmpTime.elapsed()<<"ms"<<endl;  

其實QT 操作sqlite數(shù)據(jù)庫增加事務(wù)的功能就是上面例子中藍色字體標出的兩句話,如果去掉這兩句話,程序又會還原為:打開文件——執(zhí)行query.exec(...)——關(guān)閉文件。大家可以試一下,添加這兩句即增加事務(wù)以后數(shù)據(jù)插入的速度明顯提高很多。

在入庫和更新過程中按照數(shù)據(jù)庫事務(wù)的思想進行設(shè)計:SQLite執(zhí)行入庫、更新操作的方式是,sql語句執(zhí)行對象句柄調(diào)用庫函數(shù)打開文件、調(diào)用函數(shù)執(zhí)行sql語句、關(guān)閉文件。這樣的執(zhí)行方式對于數(shù)量級別超大的文件的弊端就是每次執(zhí)行sql語句的時候都要打開文件(假設(shè)***數(shù)量級的數(shù)據(jù),就要打開和關(guān)閉文件百萬次),對于數(shù)據(jù)庫的入庫和更新操作時間主要都浪費到了文件的打開和關(guān)閉操作上,所以這里增加事務(wù)以解決該問題。

小結(jié):關(guān)于詳解Qt 中如何提高Sqlite讀寫速度的內(nèi)容介紹完了,希望本文對你有所幫助。更多關(guān)于數(shù)據(jù)庫的內(nèi)容請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-04 17:18:23

Qt SQLite 數(shù)據(jù)庫

2011-11-17 15:30:34

JavaNIOIO

2024-06-27 11:00:07

2016-09-07 15:02:03

ElasticSear索引速度

2011-07-04 17:26:00

Qt SQLite

2011-07-01 14:06:57

Qt sqlite

2011-07-05 17:54:43

QT Sqlite ARM

2011-08-22 16:26:25

IOS開發(fā)Sqlite數(shù)據(jù)庫

2009-11-04 13:38:34

.NET緩存

2011-07-05 10:44:51

Qt Sqlite 靜態(tài)編譯

2011-05-30 13:28:00

PHP

2011-08-30 14:15:34

QTSQLite數(shù)據(jù)庫

2011-06-14 11:48:38

Webkit QT

2019-09-24 09:25:05

Vue項目加載

2011-05-19 11:33:38

數(shù)據(jù)庫訪問速度

2011-07-05 10:22:44

Qt Sqlite

2011-07-05 14:46:34

2009-10-16 08:48:08

2022-04-27 09:24:22

前端代碼速度

2011-06-24 09:13:30

QT SDL
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩激情一区 | 96国产精品久久久久aⅴ四区 | 成人精品一区二区三区中文字幕 | 国产99热精品 | 欧美日韩综合 | 91麻豆精品国产91久久久更新资源速度超快 | 色播99 | 欧美 日韩 中文 | 国产成人小视频 | 成人av播放 | 国产精品久久久久久久久久久久久 | 一区观看 | 狠狠干天天干 | 亚洲国产精品一区二区久久 | 国产在线看片 | 久久亚洲国产精品 | 国产1区2区在线观看 | 亚洲成人一二三 | 中国美女av | 精品一区二区在线看 | 国产一区中文字幕 | 欧美美女二区 | 日本aa毛片a级毛片免费观看 | 97国产超碰 | 久久久欧洲 | 午夜视频免费网站 | 国产精品亚洲精品日韩已方 | 国产精品免费在线 | 综合久久av | 天堂中文在线播放 | 欧一区二区 | 91在线精品播放 | 日韩爱爱网站 | 色就干 | 欧美精品一区二区三 | 免费在线看a| 欧美视频一区 | 亚洲国产一区在线 | 亚洲av毛片 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 99热.com|