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

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

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

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

  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. // 開始啟動事務  
  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. // 提交事務,這個時候才是真正打開文件執行SQL語句的時候  
  30. db_sqlite.commit();   
  31. cout<<"10000條數據耗時:"<<tmpTime.elapsed()<<"ms"<<endl;  

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

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

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

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-07-04 17:18:23

Qt SQLite 數據庫

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開發Sqlite數據庫

2011-05-30 13:28:00

PHP

2009-11-04 13:38:34

.NET緩存

2011-07-05 10:44:51

Qt Sqlite 靜態編譯

2011-08-30 14:15:34

QTSQLite數據庫

2011-06-14 11:48:38

Webkit QT

2019-09-24 09:25:05

Vue項目加載

2011-05-19 11:33:38

數據庫訪問速度

2009-10-16 08:48:08

2022-04-27 09:24:22

前端代碼速度

2011-07-05 10:22:44

Qt Sqlite

2011-07-05 14:46:34

2011-06-24 09:13:30

QT SDL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线国产 | 2021狠狠干 | 不卡欧美| 超碰在线国产 | 播放一级黄色片 | 久久久www成人免费精品 | 亚洲av毛片 | 亚洲精品免费观看 | 国产精品久久久久久久久久免费看 | 欧美一二三区 | 国产精品亚洲片在线播放 | 国产伦一区二区三区视频 | 国产午夜精品久久久久免费视高清 | 日韩午夜精品 | 91精品国产乱码久久久久久久久 | 成人免费区一区二区三区 | 国产精品美女久久久av超清 | 日韩不卡一区二区 | 国产美女在线播放 | 久久亚洲综合 | 欧美一二区 | 一级日批片 | 午夜久久久 | 成人亚洲 | 天天草天天射 | 中文字幕一区二区三区精彩视频 | 亚洲风情在线观看 | 黑人精品欧美一区二区蜜桃 | 欧美日韩国产一区二区三区 | 最新国产视频 | 在线免费观看a级片 | 国产精品成人久久久久 | 中文字幕日韩欧美一区二区三区 | 国产精品久久久久久久岛一牛影视 | 日韩一区和二区 | 黄色毛片在线播放 | 免费观看成人性生生活片 | av色站 | 精品国产乱码久久久久久久久 | 成人影院在线视频 | 欧美伊人久久久久久久久影院 |