SQLite的数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行
sqlite3_exec(db, “insert into name values ‘lxkxf’, ‘24’; ”, 0, 0, &zErrMsg);
将会重复的打开关闭数据库文件100万次,所以速度当然会很慢。因此对于这种情况我们应该使用“事务”。
具体方法如下:在执行SQL语句之前和SQL语句执行完毕之后加上
rc = sqlite3_exec(db, "BEGIN;", 0, 0, &zErrMsg);
//执行SQL语句
rc = sqlite3_exec(db, "COMMIT;", 0, 0, &zErrMsg);
这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。有一组数据对比:
测试1: 1000 INSERTs
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
SQLite 2.7.6:
13.061
SQLite 2.7.6 (nosync):
0.223
测试2: 使用事务 25000 INSERTs
BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;
SQLite 2.7.6:
0.914
SQLite 2.7.6 (nosync):
0.757
可见使用了事务之后却是极大的提高了数据库的效率。但是我们也要注意,使用事务也是有一定的开销的,所以对于数据量很小的操作可以不必使用,以免造成而外的消耗。
分享到:
相关推荐
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,用于存储应用程序中的结构化数据。SQLite数据库支持多种操作,如...通过实践和不断的优化,你可以更好地利用SQLite满足各种数据存储需求。
本资料主要关注在Windows环境下SQLite的安装、使用以及性能优化,下面将详细阐述相关知识点。 一、SQLite的安装与配置 在Windows操作系统上,SQLite通常是通过API库或者预编译的动态链接库(DLL)进行集成。你可以...
在本文中,我们将深入探讨如何使用C#进行SQLite的基本操作,特别是关注批量插入功能,这在处理大量数据时尤其有用,如标题所述,可以实现百万级数据的秒级插入。SQLite是一个轻量级的数据库引擎,它允许在无需服务器...
在这个"Android数据库SQLite基本操作工程"中,我们将深入探讨如何在Android应用中进行最基础的数据库操作:增、删、改、查。 1. **创建SQLite数据库** - 在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建...
这篇内容将深入探讨SQLite3的基本数据库操作,包括其API的使用和C语言接口。 在SQLite3中,数据库操作主要通过C语言的API接口进行,这些接口提供了创建、打开、关闭数据库,执行SQL语句,以及处理结果集等功能。...
SQLite是一款开源、轻量级的嵌入式关系型...总之,SQLite源码和编译方法的学习对于理解数据库的工作原理、优化SQL查询以及开发自定义的数据库解决方案非常有帮助。通过实践,你可以更好地掌握这一强大的数据库引擎。
本文档将详细介绍SQLite的基本使用方法。 1. **安装与集成** SQLite不需要独立的服务器进程,它是一个静态库,可以嵌入到应用程序中。开发者可以根据平台选择对应的SQLite库文件进行集成,例如在C/C++中通过API...
5. **性能优秀**:SQLite经过优化,对于小型数据集的读写速度快,满足大多数应用需求。 6. **跨平台**:SQLite数据库格式标准,可在不同操作系统之间无缝迁移。 在实际开发中,使用SQLiteManager可以帮助开发者...
首先,我们要理解SQLite的基本插入语句,通常是这样的: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` 在Android中,我们通常通过`SQLiteOpenHelper`的子类来执行这些SQL语句,如`...
- **SQLite权威指南.pdf**:这是一本全面介绍SQLite的书籍,涵盖了SQLite的原理、API、性能优化等多个方面。 - **SQLite命令行工具.txt**:可能包含了SQLite命令行工具的基本用法和常用命令的速查表。 通过这些资源...
本教程将深入探讨SQLite的基本引用以及如何编写基本的SQL语句进行数据的存取。 首先,让我们了解如何在Python环境中引用SQLite库。Python提供了`sqlite3`模块来与SQLite数据库交互。在Python脚本中,你需要导入`...
这个例子展示了基本的数据库操作,但实际项目中可能还需要考虑更多的细节,如错误处理、性能优化、多线程环境下的并发控制等。希望这个教程能帮助你更好地理解和使用ASqlite3组件,为你的Delphi项目增添强大的数据库...
总的来说,`sqlite3.dll`、`sqlite3.h`和`sqlite3.lib`构成了SQLite3在Windows环境下的基本开发和运行组件,使得开发者能够轻松地在应用程序中集成SQLite3数据库功能。通过理解和熟练使用这些文件,开发者可以构建...
以上就是iOS开发中使用Objective-C进行SQLite3基本操作的方法。理解并掌握这些知识点,能够帮助开发者有效地管理和操作应用程序中的数据。在实际开发中,还应注意数据安全、线程同步等问题,确保程序的稳定性和可靠...
以下是对SQLite SQL基本语法的详细汇总: 1. **创建数据库**: 在SQLite中,无需显式创建数据库,只需打开一个数据库文件即可。例如: ```sql sqlite3 test.db ``` 2. **创建表**: 使用`CREATE TABLE`语句...
该文档可能涵盖了如何设计数据库结构、优化查询性能、处理并发访问等问题,对于理解SQLite在实际项目中的应用非常有帮助。 总的来说,这个资料包提供了一个全面的学习SQLite的平台,无论你是初学者还是经验丰富的...
SQLite是一个开源的关系型数据库管理系统,它以C语言编写,被广泛应用于嵌入式系统和移动应用中。在你提供的"sqlite3lib.rar"压缩包中,包含的是...了解这些基本的API使用方法,可以让你在实际开发中更加得心应手。
2. `sqlite3_analyzer`:分析SQLite数据库的内部结构,帮助优化性能。 3. `sqlite3_config`:配置SQLite3的编译选项。 4. `sqlite3_db_config`:配置已连接数据库的行为。 5. `sqlite3_key` 和 `sqlite3_rekey`:对...
下面将详细介绍如何使用MFC和SQLite3进行基本的数据库操作。 首先,要使用SQLite3,你需要下载SQLite的动态链接库(dll)和头文件(h),并将它们添加到你的VS2015项目中。这样,你的MFC程序就可以访问SQLite3的...
10. **性能优化**:通过分析SQL查询性能,提供优化建议,提升数据库运行效率。 在实际应用中,SQLiteStudio对于开发者、数据分析师或者需要处理SQLite数据库的任何用户来说,都是一个不可或缺的工具。无论是进行...