失踪';14秒SQLite数据库';演出

失踪';14秒SQLite数据库';演出,sqlite,Sqlite,我已经开发了一个程序,使用SQLite 3.7。。。数据库中有一个相当广泛的写/读模块,用于导入、检查和更新数据。这一过程在我的电脑上耗时14秒,我对它的性能非常满意 我使用paratetrs处理所有事务。我的电脑是一台带有18G内存的Intel i7。我没有在数据库中设置任何内容。我使用SQLiteExpert创建数据库,创建数据结构,包括表和列,并检查是否创建了所有索引。换句话说,一切都好 此后,我已将程序/数据库部署到另外两台机器上。在其他机器上,14秒的过程需要5分钟以上。相同的程序,相

我已经开发了一个程序,使用SQLite 3.7。。。数据库中有一个相当广泛的写/读模块,用于导入、检查和更新数据。这一过程在我的电脑上耗时14秒,我对它的性能非常满意

我使用paratetrs处理所有事务。我的电脑是一台带有18G内存的Intel i7。我没有在数据库中设置任何内容。我使用SQLiteExpert创建数据库,创建数据结构,包括表和列,并检查是否创建了所有索引。换句话说,一切都好

此后,我已将程序/数据库部署到另外两台机器上。在其他机器上,14秒的过程需要5分钟以上。相同的程序,相同的数据,相同的数据库。这些机器都是最新的,一台是上周购买的第三代Intel i7,另一台也相当快,所以硬件不应该成为问题

我只是不明白问题出在哪里?是数据库本身吗?除此之外,我还没有在上面加任何其他的说明。记住,我也是这样跑的,只需要14秒。是否数据库对我的电脑进行了“优化”?所以当我把它给别人的时候,它不是最优化的吗

我知道我可以关闭jurnaling以获得更好的性能,但这只会加快过程,仍然会留下问题

任何想法都欢迎

编辑: 我已经在我的7yo双Athelon上测试了这个程序,3gig的ram在硬盘上运行XP,这个过程花了35秒。在可容忍的范围内。我只是不明白什么能让2台现代机器花5分钟? 我有一个想法,这是一个书写问题,因为使用读卡器速度较慢,但很容易被接受。

  • SQLite速度受磁盘随机读写性能的影响最大;任何SSD在这方面都比任何旋转磁盘好得多
  • 每当更改溢出内部缓存时,必须将其写入磁盘。您应该使用将缓存增加到超过默认的2MB
  • 更改的数据必须在每个事务结束时写入磁盘。确保在一个事务中有尽可能多的更改
  • 如果大部分处理涉及临时表或索引,则速度受主磁盘速度的影响。如果您的机器有足够的RAM,您可以强制使用临时数据来RAM
  • 您应该启用

注意:默认的SQLite发行版没有加密。

通常SQLite速度受磁盘速度(用于写入)的影响,因此,如果您的新机箱有一个SSD,而另一个有一个正常的HD,这可能是产生这种效果的原因之一。我有SSD,但是当我将数据库移动到备份正常驱动器时,性能是相同的,另一台机器正在运行veloci raptor驱动器,感谢您的评论谢谢您的建议,它们非常棒,我已经在我的程序中实现了其中一些。然而,这改变了相同的数据库、相同的程序、相同的数据产生相同过程14秒5分钟持续时间的问题。我提出我的问题是为了反映我在运行XP的3gig ram的7yo双Athelon上测试了相同的数据,同样的测试耗时25秒。在可容忍的范围内。我只是不明白为什么2个拥有现代机器的用户在使用sqlite Dll时会这么慢,因为sqlite Dll支持加密