Articles of sqlite

是不可中断的睡眠我的Python程序的原因是真的很慢(如果是这样,我该如何解决这个问题?)?

我有以下select语句(使用sqlite3和pysqlite模块): self.cursor.execute("SELECT precursor_id FROM MSMS_precursor "+ "JOIN spectrum ON spectrum_id = spectrum_spectrum_id "+ "WHERE spectrum_id = spectrum_spectrum_id "+ "AND ROUND(ion_mz,9) = ? AND ROUND(scan_start_time,4) = ? "+ "AND msrun_msrun_id = ?", select_inputValues) 在Python中运行需要55秒。 直接在SQLite命令行上运行它只需要15ms。 现在,我注意到,在这个步骤中,Python程序进入了不间断的睡眠状态( 31283 ndeklein 18 0 126m 24m 3192 D 1.0 0.0 2:02.50 python ,顶级输出中的D),并从100%的CPU下降到1 % 中央处理器。 现在我在查询过程中注意到了,在运行查询时我也查看了顶部输出。 在这段时间内,top也显示它会进入不间断的睡眠状态,虽然它在R和D之间来回切换,只减慢到50%左右(根据D或R状态而变化)。 所以现在我认为这是减慢我的查询速度(请纠正我,如果不间断的睡眠与程序速度无关)。 如果这是真的,我怎样才能确保程序不会进入这种状态? 更新1: […]

sqlite插入需要很长时间

我插入一个sqlite数据库表只有200,000行。 我只是在terminal中通过sqlite3使用非常简单的.sql文件。 我敢打赌它已经跑了至less30分钟了。 这是正常的,还是应该closures这个过程,尝试一些不同的东西?

如何编译与ICU的SQLite?

我从http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz下载了sqlite 我怎样才能编译与icu的sqlite?

SQLite查询的执行时间:单位

正如在SQLite文档中所描述的,人们可以使用: sqlite> .timer ON 或者将相同的命令添加到〜/ .sqliterc 完成此操作后,SQLite shell会对每个执行的查询以CPU时间的用户和sys组件进行响应: user@machine% sqlite3 test.db — Loading resources from ~/.sqliterc SQLite version 3.7.14 2012-09-03 15:42:36 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select count(*) from my_table; count(*) 10143270 CPU Time: user 0.199970 sys 1.060838 虽然我发现这个答案在几秒钟内为时间单位提供了证据,但我却很难同意。 当使用秒表计时执行查询时,我发现几乎每个查询所花费的时间都比shell的时间要长。 例如,上面例子中的查询时间约为1分54秒 。 这种差异的原因是什么? 那么再一次,这些单位是什么? 什么是用户和系统组件? 我在通过NFS访问的Debian GNU / […]

将数据embedded到C ++程序中

我有一个使用SQLite的C ++程序。 我想将SQL查询存储在一个单独的文件中 – 一个纯文本文件, 而不是一个源代码文件 – 但是将该文件embedded到可执行文件中,就像资源一样。 (这个必须在Linux上运行,所以我不能把它作为一个实际的资源存储,据我所知,尽pipe如果它是Windows的话,那将是完美的)。 有没有简单的方法来做到这一点,还是会有效地要求我为Linux编写自己的资源系统? (很容易,但需要更长的时间。)

sql的正确path/ URI的PHP在Windows上的pdo

[ante-scriptum:这是一个自我回答的问题,你不需要麻烦回答] 我遇到了一个奇怪的configuration问题,没有logging在特定的PHP.net页面或StackOverflow的任何地方。 问题 在Windows上打开现有的sqlite数据库时,同样的错误一直显示: SQLSTATE[HY000] [14] Unable To Open Database File 虽然执行的代码是从手册复制/粘贴: <?php /* Connect to an ODBC database using driver invocation */ $dsn = 'sqlite:/full/path/to/db'; $user = 'dbuser'; $password = 'dbpass'; try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?> 我无法打开这个数据库,因为我在Google上search了各种各样的DSN: $dsn […]

静态链接SQLite与DMD(Windows x86)

我试图静态链接与sqlite3没有成功。 我正在使用“etc.c.sqlite3”标题和sqlite3合并。 创build.lib文件我已经尝试了VC ++和MinGW-gcc,它们都能成功编译源文件 – 但是它们都生成COFF对象格式(DMD使用的optlink,可以和OMF一起使用)。 在阅读“digitalmars.D”上的post后,我尝试了几种不同的解决scheme。 objconv: 试图转换使用GCC创build的lib文件,导致未定义的符号,如__divdi3和__muldi3,无法解决这个问题。 也试过这个将sqlite3.o文件转换为* .obj,然后使用digitalmars'lib.exe' – 也不成功 在VC ++生成的lib上尝试objconv失败,因为:“SQLite.lib是一个导入库” IMPLIB: 如果我从sqlite.org下载了预编译的DLL并使用了implib,它会生成一个lib文件,但是这个名字似乎并不匹配,因为即使我与静态库链接,仍然会收到相同的sqlite错误(例如undefined符号_sqlite3_open , _sqlite3_errmsg , _sqlite3_close … coffimplib: 如果我在VC ++创build的库文件上使用coffimplib,程序将生成一个几乎为空的文件(〜2KB),其中只包含垃圾(即根本没有符号,大部分只是'空'值)。 如果我对GCC创build的库做同样的事情,coffimplib会抱怨“不是导入库”,也不会生成转换后的库文件。 如果我使用DMC来编译sqlite3合并,编译失败抱怨大量的错误。 所以在这里,我陷入了困境,有没有人有任何想法或提示什么可以解决这个问题? 注意:我不想使用DLL,但静态链接与SQLite(为可执行文件大小考虑)。

为什么Windows提供了一个sqlite3.OperationalError和Linux不?

问题 我有一个程序使用风暴0.14 ,它给了我这个错误在Windows上: sqlite3.OperationError:数据库表被locking 事情是,在Linux下它工作正常。 我有这样的印象,只有在完成了一定的修改之后才会发生,就像在某些代码中发生的那样,它会复制大量的对象。 打开debugging模式给了我这个在Windows上: 83 EXECUTE:'UPDATE regularorder_product SET discount =? WHERE regularorder_product.order_id =? AND regularorder_product.product_id =?',(Decimal(“25.00”),788,274) 84完成 85 EXECUTE:'UPDATE repeated_orders SET nextDate =? WHERE repeated_orders.id =?',(datetime.date(2009,3,31),189) 86错误:数据库表被locking 在linux上: 83 EXECUTE:'UPDATE regularorder_product SET discount =? WHERE regularorder_product.order_id =? AND regularorder_product.product_id =?',(Decimal(“25.00”),789,274) 84完成 85 EXECUTE:'UPDATE repeated_orders SET nextDate =? WHERE repeated_orders.id =?',(datetime.date(2009,3,31),189) 86完成 系统信息 […]

有没有办法中止SQLite调用?

我在Windows应用程序中使用SQLite3。 我有源代码(所谓的SQLite合并)。 有时我必须执行大量的查询。 也就是说,我在准备好的语句上调用sqlite3_step ,并且花费很多时间来完成(由于繁重的I / O负载)。 我想知道是否有可能放弃这样的电话。 如果能够在同一个线程的调用过程中进行一些后台处理(因为大部分时间都用于等待I / O完成),我也会很高兴。 我想过自己修改SQLite代码。 在最简单的情况下,我可以在每次调用ReadFile / WriteFile之前检查一些条件(例如中止事件句柄),并适当地返回一个错误代码。 并且为了允许后台处理文件应该以重叠模式打开(这使得asynchronous的ReadFile / WriteFile )。 在某些情况下,即使启用了日志, WriteFile中断是否有可能使数据库处于不一致的状态? 我想不是,因为日志文件的整个想法是准备任何types的任何错误。 但是我想听到更多的意见。 另外,有人尝试过类似的东西吗? 提前致谢。 编辑: 感谢ereOn。 我没有意识到sqlite3_interrupt的存在。 这可能回答我的问题。 现在,对于所有人来说,想知道在同一个线程的I / O期间如何(以及为什么)要做一些后台处理。 不幸的是,很多人都不熟悉所谓的“重叠I / O”。 http://en.wikipedia.org/wiki/Overlapped_I/O 使用它可以asynchronous地发出I / O操作,并且调用线程不会被阻塞 。 然后使用完成机制之一接收I / O完成状态:等待事件,排队到APC中的新例程或完成端口。 使用这种技术不需要创build额外的线程。 实际上创build线程的唯一真正的合法化是当你的瓶颈是计算时间(即CPU负载),并且机器有几个CPU(或核心)。 而创build一个线程只是为了让它在大多数时间被操作系统阻塞 – 这是没有道理的。 这导致操作系统资源的不合理浪费,使程序复杂化(需要同步等)。 不幸的是,并不是所有的库/ API都允许asynchronous操作模式,因此创build额外的线程必然是邪恶的。 EDIT2: 我已经find了解决scheme,thansk ereOn。 对于所有那些坚持认为在“等待”I […]

在C#中创buildCron作业

我在C#中编写一个调度types的应用程序,并允许用户存储他们想要在特定时间运行的任务。 现在我给他们指定运行频率(每日/每周/每月)以及指定时间的选项,然后存储在数据库中。 我有点麻烦,只是把我的头围绕在这个背后的伪代码上,我正在寻找一些关于如何实现它的build议。 我每60秒运行一个重复计时器来检查每个任务是否需要运行,但是当我需要使用date/时间并且添加循环日(每天/每周/等)时,似乎总是碰到路障它甚至更多。