Articles of sqlite

SQLite WAL性能改进

我有一个在embedded式Linux上运行的应用程序。 我有一个预先build立的DB与一些表,其中每个有很多行(千)和52列。 我build立了数据库前面,因为我担心,如果我会做'插入'在运行时,我会做磁盘碎片,所以而是我build立一个数据库首先有很多垃圾'插入',在运行时我使用“更新”。 我每隔3秒向DB写入大量数据,而为了使写入过程更快,我在SQLite中使用了WAL模式。 虽然,我有一个performance的问题。 似乎每当检查点发生时,它花费的时间太长,处理器不能在less于3秒的时间内完成。 为了改善这一点,我创build了一个线程,在10个写入调用之后,它从主线程接收一个消息队列,而不是检查点。 所以现在看起来情况好多了,但是WAL文件越来越大了……我怎么在这里工作?

避免sqlite3数据库被locking

我有一个multithreading的应用程序,使用sqlite(3.7.3) 我正在打数据库locking错误,似乎是相当普遍的。 我想知道如何避免在我的情况。 让我来描述一下我正在build造的东西。 对不起,没有代码太大又复杂。 我有大约8个线程同时访问数据库。 任何一个线程都可以同时读取或写入。 数据库表中的每一行都有一个文件path,指向一个资源+与该资源相关的其他属性。 注意的三个字段是读者,状态和del。 每次线程读取资源时,读取器都会递增,但只有状态> 0和del = 0时读取器才会递增。 所以我有一些SQL呢 UPDATE resource set readers=readers+1 where id=? AND del=0 AND status>0 之后,我检查更新的行数。 它应该只有1.之后,我尝试阅读与select的行。 即使它没有更新,我也这样做,因为我需要知道失败的原因。 我尝试在事务中包装更新和select,但没有帮助。 我已经检查过,我正在致电我的发言。 现在,我认为sqlite默认序列化。 我尝试了几个开放的模式,但我仍然得到相同的错误。 在你问之前,不,我不打算去mysql。 我绝对需要零configuration。 有人可以提供一些关于如何避免这种types的问题的指针吗? 我应该将读取器locking在数据库之外吗? 如果我这样做,我应该用什么机制来取代它? 我正在使用Linux下的C + +和boost库提供。 编辑:有趣的是,我更新后的呼叫添加COMMIT改善了事情戏剧性。

如何判断SQLite是否在Linux上正确安装?

我在共享帐户上使用虚拟主机服务。 他们有MySQL,但我需要使用SQLite作为名为SobiPro的Joomla扩展。 我如何知道SQLite是否在Linux上正常安装和正常工作?

有一个命令行实用程序在Linux中validationSQLite数据库?

我正在寻找一个命令行实用程序来validationSQLite数据库。 我遇到了一些应用程序无法启动的inheritance代码的情况,因为尝试访问数据库产生了以下错误: database disk image is malformed 所以我需要在应用程序中使用一些validation代码。 另外,虽然我需要一个可以从Linux提示符下运行的工具,告诉我数据库是否损坏。 谢谢

SQLite为只读应用程序?

对于数据库驻留在Windowsnetworking驱动器上的多用户只读应用程序,SQLite是否可以正常工作?

SQLite的Visual Studio链接器错误

我有2个C ++项目,一个用于Windows XP / Vista / 7(WinXP),另一个用于Windows Mobile 6(WinMo)。 这两个项目使用相同的源代码。 我想链接到sqlite3.lib。 我已经使用VS和sqlite.def文件附带的lib工具生成了这个文件。 我使用Add – > Existing Item ….将这个文件添加到两个项目的Resource文件夹中。我还将其添加到其他依赖项(Configuration Properties> Linker> Input)中。 我也把sqlite3.dll文件放在工作和可执行目录中。 我写了一些代码,使用sqlite3的类有#include“sqlite3.h”。 现在,在WinXP项目中,我能够使用sqlite3 API编译,链接和执行数据库操作。 在WinMo项目中,我可以编译,但得到我需要的sqlite3库中的所有函数的链接器错误: 1>Linking… 1>SQLiteDatabase.obj : error LNK2019: unresolved external symbol sqlite3_shutdown referenced in function "public: virtual __cdecl… …. 我究竟做错了什么?

为什么我的应用程序不能从SQLite迁移后修改开发postgresql数据库?

我把我的开发数据库从SQLite切换到PostgreSQL。 我的应用程序在开发和生产(Heroku,postgresql)工作,但现在我不能修改,删除或创build新的postgresql开发数据库中的logging。 用户只能正确login,查看他们的个人资料信息和登出。 创build用户时出错: ActiveRecord::StatementInvalid in Devise::RegistrationsController#create Errno::EBADF: Bad file descriptor – rb_thread_select(): INSERT INTO "users" ("field1", "field2", "field3", …etc continues through…, "Field28") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28) RETURNING "id" 删除用户时出错: […]

有时databse创build,但有时不是

我刚刚开始使用sqlite 3.7.17的SQL。 我试着在这里阅读。 正如build议我跑了 create table test (id); .quit 命令在sqliteterminal。 在当前目录中没有创build.db文件。 然后我试图通读文件并跑 sqlite3 test.db 在terminal。 没有.db文件被创build,但sqliteterminal打开。 我跑了 ; .quit 在sqliteterminal和.db文件被创build。 我正在使用Windows 7和我一直在谈论的terminal是Windows Powershell。 我已经将Windows的二进制文件放在C:\Windows\system32\文件夹中,以便terminal识别sqlite3。 我做错了什么? 为什么.db文件创build一次?

sqlite3.exe:如何停止长时间运行的SQL语句

如何停止在Windows上运行的sqlite3.exe中长时间运行的SQL语句? http://www.sqlite.org/cli.html上的文档声明如下 您可以通过键入您的系统文件结束符(通常是Control-D)来终止sqlite3程序。 使用中断字符(通常是Control-C)来停止长时间运行的SQL语句。 但在Windows上,Control-D什么也不做,Control-C终止sqlite3程序。 我也试过Break(即Control-Pause),它和Control-C一样 有任何想法吗?

Universal WIndows平台上的Mono.data.sqlite

我无法让我的共享项目与我的UWP应用程序一起工作。 共享项目使用Mono.Data.Sqlite进行数据库连接,它可以在Android和iOS上运行,但是我不知道我错过了什么引用,因为它不能识别UWP上的库。 任何人之前尝试过?