【发布时间】:2011-03-23 19:33:01
【问题描述】:
我正在为我的公司测试 Microsoft 的 ESENT(可扩展存储引擎)。但是,我的性能结果很奇怪。
与同类技术(SqlLite)相比,读取数据时性能很弱。
在我的性能测试中,我或多或少随机读取了数据库中的所有数据。我不会两次读取相同的数据,所以我认为缓存无法帮助我。我多次运行测试以获得数据“热”时的速度。我在 long 类型的 id 上使用索引。我使用以下函数:JetSetCurrentIndex、JetMakeKey、JetSeek 和 JetRetrieveColumn 来读取。
在 Windows Vista 中,我激活了参数 JET_paramEnableFileCache,它创造了奇迹,甚至比 SqLite 还要快。
但是,由于此参数在 Windows Vista 或更高版本上可用,因此在 Windows XP 中的性能无法与 SQlite 相比(比如慢 15 倍)。它每次都在磁盘上读取。在 Windows XP 上使用 Sqlite 时,所有读取测试(第一个除外)都不会在磁盘上读取。
我是否遗漏了另一个参数或会产生影响的东西?
非常感谢!
【问题讨论】:
标签: sqlite windows-xp windows-vista esent