`
乌拉蕾
  • 浏览: 73767 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

SQLite的基本优化方法

    博客分类:
  • DB
阅读更多
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基本操作

    在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,用于存储应用程序中的结构化数据。SQLite数据库支持多种操作,如...通过实践和不断的优化,你可以更好地利用SQLite满足各种数据存储需求。

    sqlite 优化资料

    本资料主要关注在Windows环境下SQLite的安装、使用以及性能优化,下面将详细阐述相关知识点。 一、SQLite的安装与配置 在Windows操作系统上,SQLite通常是通过API库或者预编译的动态链接库(DLL)进行集成。你可以...

    Android数据库SQLite基本操作工程

    在这个"Android数据库SQLite基本操作工程"中,我们将深入探讨如何在Android应用中进行最基础的数据库操作:增、删、改、查。 1. **创建SQLite数据库** - 在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建...

    c# 对sqlite基本操作,带批量插入(百万级秒插)

    在本文中,我们将深入探讨如何使用C#进行SQLite的基本操作,特别是关注批量插入功能,这在处理大量数据时尤其有用,如标题所述,可以实现百万级数据的秒级插入。SQLite是一个轻量级的数据库引擎,它允许在无需服务器...

    SQLite3基本数据库操作

    这篇内容将深入探讨SQLite3的基本数据库操作,包括其API的使用和C语言接口。 在SQLite3中,数据库操作主要通过C语言的API接口进行,这些接口提供了创建、打开、关闭数据库,执行SQL语句,以及处理结果集等功能。...

    sqlite源码和编译方法

    SQLite是一款开源、轻量级的嵌入式关系型...总之,SQLite源码和编译方法的学习对于理解数据库的工作原理、优化SQL查询以及开发自定义的数据库解决方案非常有帮助。通过实践,你可以更好地掌握这一强大的数据库引擎。

    SQLite的基本使用说明

    本文档将详细介绍SQLite的基本使用方法。 1. **安装与集成** SQLite不需要独立的服务器进程,它是一个静态库,可以嵌入到应用程序中。开发者可以根据平台选择对应的SQLite库文件进行集成,例如在C/C++中通过API...

    SQLiteManager操作SQLite数据库

    5. **性能优秀**:SQLite经过优化,对于小型数据集的读写速度快,满足大多数应用需求。 6. **跨平台**:SQLite数据库格式标准,可在不同操作系统之间无缝迁移。 在实际开发中,使用SQLiteManager可以帮助开发者...

    android sqlite 批量插入数据优化代码

    首先,我们要理解SQLite的基本插入语句,通常是这样的: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` 在Android中,我们通常通过`SQLiteOpenHelper`的子类来执行这些SQL语句,如`...

    sqlite developer软件及方法

    - **SQLite权威指南.pdf**:这是一本全面介绍SQLite的书籍,涵盖了SQLite的原理、API、性能优化等多个方面。 - **SQLite命令行工具.txt**:可能包含了SQLite命令行工具的基本用法和常用命令的速查表。 通过这些资源...

    sqlite的基本引用和基本sql的写入

    本教程将深入探讨SQLite的基本引用以及如何编写基本的SQL语句进行数据的存取。 首先,让我们了解如何在Python环境中引用SQLite库。Python提供了`sqlite3`模块来与SQLite数据库交互。在Python脚本中,你需要导入`...

    Delphi使用ASqlite3 连接SQLite上例子

    这个例子展示了基本的数据库操作,但实际项目中可能还需要考虑更多的细节,如错误处理、性能优化、多线程环境下的并发控制等。希望这个教程能帮助你更好地理解和使用ASqlite3组件,为你的Delphi项目增添强大的数据库...

    sqlite3文件(sqlite3.dll,sqlite3.h,sqlite3.lib)

    总的来说,`sqlite3.dll`、`sqlite3.h`和`sqlite3.lib`构成了SQLite3在Windows环境下的基本开发和运行组件,使得开发者能够轻松地在应用程序中集成SQLite3数据库功能。通过理解和熟练使用这些文件,开发者可以构建...

    iOS源生SQLite3基本操作(OC版)

    以上就是iOS开发中使用Objective-C进行SQLite3基本操作的方法。理解并掌握这些知识点,能够帮助开发者有效地管理和操作应用程序中的数据。在实际开发中,还应注意数据安全、线程同步等问题,确保程序的稳定性和可靠...

    Sqlite SQL基本语法汇总

    以下是对SQLite SQL基本语法的详细汇总: 1. **创建数据库**: 在SQLite中,无需显式创建数据库,只需打开一个数据库文件即可。例如: ```sql sqlite3 test.db ``` 2. **创建表**: 使用`CREATE TABLE`语句...

    sqlite3lib.rar

    SQLite是一个开源的关系型数据库管理系统,它以C语言编写,被广泛应用于嵌入式系统和移动应用中。在你提供的"sqlite3lib.rar"压缩包中,包含的是...了解这些基本的API使用方法,可以让你在实际开发中更加得心应手。

    SQLITE资料(SQLite3.0,SQLite语法,SQLite参考手册)

    该文档可能涵盖了如何设计数据库结构、优化查询性能、处理并发访问等问题,对于理解SQLite在实际项目中的应用非常有帮助。 总的来说,这个资料包提供了一个全面的学习SQLite的平台,无论你是初学者还是经验丰富的...

    Linux-sqlite3

    2. `sqlite3_analyzer`:分析SQLite数据库的内部结构,帮助优化性能。 3. `sqlite3_config`:配置SQLite3的编译选项。 4. `sqlite3_db_config`:配置已连接数据库的行为。 5. `sqlite3_key` 和 `sqlite3_rekey`:对...

    mfc数据库sqlite3的基本操作

    下面将详细介绍如何使用MFC和SQLite3进行基本的数据库操作。 首先,要使用SQLite3,你需要下载SQLite的动态链接库(dll)和头文件(h),并将它们添加到你的VS2015项目中。这样,你的MFC程序就可以访问SQLite3的...

    SQLiteStudio-2.1.5 非常好用的SQLite编辑工具

    10. **性能优化**:通过分析SQL查询性能,提供优化建议,提升数据库运行效率。 在实际应用中,SQLiteStudio对于开发者、数据分析师或者需要处理SQLite数据库的任何用户来说,都是一个不可或缺的工具。无论是进行...

Global site tag (gtag.js) - Google Analytics