SQLite:结束事务花费的时间太长

2024-02-27

我正在事务中插入几行。但是,当我执行“END TRANSACTION”时,执行时间约为 250 毫秒,而“BEGIN TRANSACTION”则几乎不需要 1 毫秒左右。我需要加快这里的速度以适应我的应用程序。我怎么能够?

[编辑] * 单线程正在访问数据库。 * 我在这个数据库中有 2 个表,这两个表都有主键。 * 在一个事务中,每个表中只有一个插入。 * 操作系统 - Windows 7


使用 sqlite 的开箱即用或默认设置,250 毫秒来提交事务是有意义的。这是由于 sqlite 提交事务的方式所致。它等待 VFS 保证写入已提交到磁盘以返回。

这里有一些优化的可能性。

每个事务封装更多插入

如果可能,每个事务执行更多插入。尝试在一个事务中运行 100 次插入,看看与仅 1 次插入相比差异有多大。您甚至可能看不到任何内容(即 100 次插入可能会花费略多于 250 毫秒的时间)。

最重要的是,您将获得更多的收益,因为每次插入最终将花费更少的时间(平均而言)。

使用 WAL 日志记录

我强烈建议您尝试 WAL 日志记录,因为您应该会看到 250 毫秒显着减少。 WAL 的安全性不应比常规日记差。 WAL 更快的原因就在它的名字中:它附加到日志文件中,而不是让数据库文件在每次提交时吸收提交的更改。读this http://www.sqlite.org/wal.html完整的故事。

要激活 WAL 日志功能,请设置journal_mode杂注到WAL:

PRAGMA journal_mode = WAL;

更改同步编译指示

这对您来说可能足够好,也可能不够好,因为它不太安全。因此,只有当您了解风险是什么,并且前面的两个建议对您来说不够好,或者您无法使用它们时,我才会推荐它。

基本上,改变synchronous pragma设置为 NORMAL 或 OFF 将导致 sqlite 在 VFS 之后不等待保证写入已提交到磁盘以返回。

请阅读文档 http://www.sqlite.org/pragma.html#pragma_synchronous首先,如果您仍然想尝试一下,可以将您的编译指示设置为 OFF 或 NORMAL:

PRAGMA synchronous = NORMAL;

or

PRAGMA synchronous = OFF;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite:结束事务花费的时间太长 的相关文章

  • 更改列名称 Rails

    我有这张表 class CreateShoes lt ActiveRecord Migration def change create table shoes do t t string name t boolean leather t i
  • 如何使用 aerospike 加载器在 aerospike 中加载嵌套的 csv 文件?

    我已将 JSON 文件转换为 CSV 格式 现在使用 aerospike 加载器将 CSV 加载到 Aerospike 中 我可以为简单的结构执行此操作 但如何修改 allDatatype json 的内容以在 Aerospike 中加载嵌
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • 将 python 列表存储到数据库的最佳方法?

    将 python 数字列表 例如 4 7 10 39 91 存储到数据库的最佳方法是什么 我使用 Pyramid 框架和 SQLAlchemy 与数据库进行通信 Thanks 您可以使用json http docs python org l
  • 使用 mongoose 更新 mongoDb 中数组内的对象[重复]

    这个问题在这里已经有答案了 我正在 MongoDB 上工作 以更新 MongoDB 集合中数组内部的对象值 我的收藏就像 id ObjectId 59b7e839200a5c00ee2d2851 player New playesList
  • 为什么Aries在数据库管理恢复中要先执行redo before undo?

    如果 Aries 算法已经知道在分析阶段之后要撤消哪些事务 为什么它会在撤消之前应用重做 我知道 认为 这与 Lsn 数字和维护一致性有关 因为在磁盘上刷新的数据撤消事务可能与崩溃时撤消事务不同 由于脏数据 页 但我找不到这个问题的任何 正
  • 无法从 CursorWindow 读取第 0 行,第 -1 列?

    我在使用数据库时遇到问题 当我运行 SQLView java 时 出现致命异常 java lang RuntimeException Unable to start activity ComponentInfo com jacob eind
  • 动态连接字符串数据库C#

    我总是使用这行代码进行连接 string ConnectString datasource mysource username myusername password mypassword database mydatabasename 这
  • 直接从表中选择和视图之间的区别

    直接从表中选择数据或从视图中选择数据有什么区别 每一种的最佳用途是什么 根据微软的说法 如果你使用的话会有性能优势indexedSQL Server 2000 2005 2008 中的视图 索引视图可以通过以下方式提高查询性能1 可以预先计
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • JPA 乐观锁与同步 Java 方法

    使用 JPA 乐观锁定 我们可以通过 Version 字段控制数据库表是否已被另一个事务同时更新 从而允许在数据库中存储可靠的数据 如果一个Java应用程序只有一个CRUD服务负责数据库中的特定实体 我们也可以同步其方法并管理信息在数据库中
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • SQLite:*防止*主键值在删除所有行后重置[重复]

    这个问题在这里已经有答案了 我有一个 SQLite 表 有几列 包括一个 ID 列 它是 INTEGER PRIMARY KEY 当我插入时 该值会按预期增加 但是 当我删除所有行时 该列的值在下一次插入时恢复为 1 有没有办法让列值从删除
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • 仅将唯一行插入 SQLite (python)

    我在用着cursor executemany将 CSV 文件中的批量行插入到 SQLite 表中 根据主键字段 其中一些行预计会重复 当我执行该命令时 可以预见的是 我会收到完整性错误 并且不会插入任何内容 如何有选择地仅插入非重复行 而无
  • 如何从实体框架中的 .edmx 文件生成数据库?

    我不得不突然转而使用 Code First Entity Framework 4 1 一开始我对这个框架一无所知 但在过去的 8 个小时里 我现在对阅读博客和文章感到更加自在 特别是这个博客 http blogs msdn com b ad
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • oracle lag 函数与 group by

    我有一个查询忽略从前一个值增加的值 例如 采用下表 col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询 select col1 from select col1 lag
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex

随机推荐

  • Prop 和 Type 的不同归纳原理

    我注意到 Coq 综合了关于 Prop 和 Type 等式的不同归纳原理 有人对此有解释吗 平等定义为 Inductive eq A Type x A A gt Prop eq refl x x 与之相关的归纳原理有以下类型 eq ind
  • JTextArea 更新为 DocumentListener

    JTextArea area1 new JTextArea JTextArea area2 new JTextArea DocumentListener documentListener new DocumentListener publi
  • 使用模块中的方法模拟类

    我正在使用 PowerShell 2 0 无法升级 并且正在编写一系列使用 Active Directory 中的一些信息的脚本 来自 C 等 OOP 语言 我想在 PowerShell 2 0 中模拟一个类 但我知道它们只有class5
  • 程序卡住,管道文件描述符何时不应该打开?

    我正在创建一个可以读取命令的小 shell 当我运行我的程序并输入 cat file txt gt file2 txt 它创建了文件 然后卡在了这一行 if execvp structVariables gt argv 0 argv lt
  • 矩阵的滑动窗口求和

    我有一个 50x50 矩阵 我想对每个 10x10 或另一个设定大小值 始终是正方形 重叠网格中的值求和 即 为了清楚起见 重叠的窗口仅以对角线显示 我尝试做的第一个任务是定义每个窗口的坐标 win 10 start 1 10 1 10 f
  • PHP cURL,使用 CURLOPT_RETURNTRANSFER 时出现内存泄漏

    下面的代码是在一个循环中 每个循环都会将 URI 更改为新地址 我的问题是每次传递都会占用越来越多的内存 ch curl init curl setopt ch CURLOPT URL URI curl setopt ch CURLOPT
  • MySQL 与 Sequelize:ER_BAD_DB_ERROR:未知数据库

    我正在遵循教程 下面是代码 var Sequelize require sequelize var sequelize new Sequelize basic mysql database mysql root password diale
  • 如何在 Ruby 中执行相当于 's3cmd ls s3://some_bucket/foo/bar' 的操作?

    如何在 Ruby 中执行相当于 s3cmd ls s3 some bucket foo bar 的操作 我找到了适用于 Ruby 的 Amazon S3 gem 以及正确的 AWS S3 库 但不知何故 如何在 S3 文件夹 之类的位置上执
  • MessageKit 不显示消息输入栏 Swift 5

    这是控制器层次结构 tabBarController gt 一些控制器和聊天频道控制器 并且这个聊天频道控制器也是一个导航控制器 当我选择行时 它会推送到 MessageViewController 类的聊天控制器 我这里有两个问题 一是小
  • 为什么使用 Tiled 的 libgdx 游戏中出现线条?

    我正在使用 LibGdx 和 Tiled 当在屏幕上移动时 游戏上会出现水平线和垂直线 如果需要的话 我可以发布您需要的任何代码 我怎样才能让这些线路停止 这是一个 gfycat gif 的线条 http gfycat com FastUn
  • QML - MouseArea/MouseEvent 问题

    下面的代码生成一个白色矩形 其中包含一个红色矩形和一个灰色矩形 每个矩形都有一个关联的 MouseArea 当鼠标在灰色矩形内单击时 灰色矩形会变成蓝色 当鼠标光标进入红色矩形内部时 红色矩形会打印一条控制台消息 当发出释放信号时 会打印另
  • 我如何比较“Bcrypt”Gem 解密的密码和加密的密码

    我正在尝试对某些帖子的评论使用简单的身份验证 用户使用即时 ID 和密码输入评论 我使用 bcrypt gem 将密码存储在数据库中 就像comments controller rb中这样 comment Comment new comme
  • Django 中子查询的查询

    我正在尝试从另一个查询执行查询 但 Django 说 渲染时捕获数据库错误 子查询返回超过 1 行 我正在使用 PostGis my model class Place models Model coordinate models Poin
  • 通过 .htaccess 文件为所有 PHP 脚本设置 HTTP 标头

    我在我的一个项目中对所有 PHP 程序编写了相同的代码行 是否可以在目录的 htaccess 中执行此操作 如何 PHP 代码 Header Content Type application xhtml xml charset utf 8
  • 混淆矩阵和列联表有什么区别?

    我正在编写一段代码来评估我的聚类算法 我发现每种评估方法都需要来自m n类似矩阵A aij where aij是属于类成员的数据点的数量ci和簇的元素kj 但似乎有两个这种类型的矩阵数据挖掘简介 Pang Ning Tan 等 一个是混淆矩
  • iOS:无法启动 .app 文件

    我不知道为什么它在我的 app 文件中寻找目录 每次我运行应用程序时 它都会在 iPhone 上安装应用程序 但不会运行并给出以下错误 谁能告诉我这个设置存储在哪里 谢谢 error failed to launch Users xxx L
  • 更新/替换 Google 文档上的内嵌图像

    我正在尝试设置一个功能来更新 Google 文档上的图像 就像 Lucidchart Add on 对其 更新插入图表 功能所做的那样 为此 我目前正在执行以下操作 创建命名范围并将其 id 与生成图像的数据一起存储在文档属性中 以供以后检
  • 内部 __lzcnt64 使用不同的编译选项返回不同的值

    我有以下代码 include
  • BindingResult 和 bean 名称“categoryOptions”的普通目标对象都不能作为请求属性

    我知道这个主题有很多线程 我已经尝试了其中的大多数 但仍然无法解决我的问题 我正在使用SpringMVC and MongoDB我想要实现的是 我将在数据库中存储一些数据 然后将其从数据库检索回选择选项 这是我的代码 Jsp页面
  • SQLite:结束事务花费的时间太长

    我正在事务中插入几行 但是 当我执行 END TRANSACTION 时 执行时间约为 250 毫秒 而 BEGIN TRANSACTION 则几乎不需要 1 毫秒左右 我需要加快这里的速度以适应我的应用程序 我怎么能够 编辑 单线程正在访