做网站避免上当,广东网页空间分销,wordpress 音乐页面,自学seo能找到工作吗SQLite数据库本质上来讲就是一个磁盘上的文件#xff0c;所以一切的数据库操作其实都会转化为对文件的操作#xff0c;而频繁的文件操作将会是一个很好时的过程#xff0c;会极大地影响数据库存取的速度。例如#xff1a;向数据库中插入100万条数据#xff0c;在默认的情况…SQLite数据库本质上来讲就是一个磁盘上的文件所以一切的数据库操作其实都会转化为对文件的操作而频繁的文件操作将会是一个很好时的过程会极大地影响数据库存取的速度。例如向数据库中插入100万条数据在默认的情况下如果仅仅是执行query.exec(insert into DataBase(......) values(......));就会打开和关闭文件100万次所以速度当然会很慢。SQLite数据库是支持事务操作的于是我们就可以通过事务来提高数据库的读写速度。事务的基本原理是数据库管理系统首先会把要执行的sql语句存储到内存当中只有当commit()的时候才一次性全部执行所有内存中的数据库。下面是一个简单的QT sqlite数据库事务的例子#include #include #include using namespace std;int main(int argc, char *argv[]){QCoreApplication a(argc, 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; i100000; 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){coutbreak;}}// 提交事务这个时候才是真正打开文件执行SQL语句的时候db_sqlite.commit();cout}其实QT 操作sqlite数据库增加事务的功能就是上面例子中蓝色字体标出的两句话如果去掉这两句话程序又会还原为打开文件——执行 query.exec(...)——关闭文件。大家可以试一下添加这两句即增加事务以后数据插入的速度明显提高很多。在入库和更新过程中按照数据库事务的思想进行设计SQLite执行入库、更新操作的方式是sql语句执行对象句柄调用库函数打开文件、调用函数执行sql语句、关闭文件。这样的执行方式对于数量级别超大的文件的弊端就是每次执行sql语句的时候都要打开文件(假设百万级数量级的数据就要打开和关闭文件百万次)对于数据库的入库和更新操作时间主要都浪费到了文件的打开和关闭操作上所以这里增加事务以解决该问题。http://cdn.verydemo.com/demo_c278_i9327.html