0

我开发了一个使用 SQLite 3.7 ... 数据库的程序,其中有一个相当广泛的写入/读取模块,可以导入、检查和更新数据。这个过程在我的 PC 上需要 14 秒,我对性能感到满意。

我对所有事物都使用事务处理,我的 PC 是带有 18gig ram 的 Intel i7。我没有在数据库中设置任何东西。我使用 SQLite Expert 创建数据库并创建包括表和列的数据结构,并检查是否创建了所有索引。换句话说,一切正常。

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

我只是不明白问题可能是什么?是数据库本身吗?我没有在上面设置任何其他内容。记住我运行相同,它需要 14 秒。难道数据库是针对我的电脑“优化”的吗?所以当我把它给别人时它没有优化?

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

任何想法都会受到欢迎。

编辑:我已经在我的 7yo Dual Athelon 上测试了这个程序,用 3gig 的 ram 在 HDD 上运行 XP,这个过程花了 35 秒。考虑到在可容忍的范围内。我只是不明白是什么让 2 台现代机器需要 5 分钟?我有一个想法,这是一个写入问题,因为使用阅读器它们速度较慢但完全可以接受。

4

1 回答 1

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

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

于 2012-09-23T09:10:43.767 回答