sqlite3 性能测试 - 如何快速重置/清除缓存

Posted

技术标签:

【中文标题】sqlite3 性能测试 - 如何快速重置/清除缓存【英文标题】:sqlite3 performance testing - how to quickly reset/clear the cache 【发布时间】:2018-07-04 17:02:01 【问题描述】:

我希望这是一个简单的问题。

在进行查询性能测试时,运行相同的连续查询总是会比第一次尝试更快地返回响应(通常快得多)。

将 sqlite3 '重置'回其默认状态的最简单/最快的方法是什么?

运行VACUUM 可能需要相当长的时间,而且显然不仅仅是“重置”一些事情。

谢谢,

【问题讨论】:

这个问题其实是关于OS文件缓存的。 好吧...如果您有 root 权限,您可以擦除操作系统的整个缓存,但这有点...笨手笨脚。 【参考方案1】:

所以,似乎 sqlite3 没有能力自己做到这一点。您可以通过以 root 身份运行以下命令来刷新 linux 中的 pagecache/inode 来弥补这一点:

echo 3 > /proc/sys/vm/drop_caches

为了使其对性能测试有效,您需要在每次迭代之间运行此命令。该值不会改变(这是反直觉的),但每次将值写入文件时,都会激活刷新过程。

【讨论】:

以上是关于sqlite3 性能测试 - 如何快速重置/清除缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何在每次测试之前重置或清除 ApolloProvider 的 useQuery 模拟?

如何在 Jest 中重置或清除间谍?

Sqlite3插入性能测试

如何从片段外部清除/重置地图?

如何快速清除 JavaScript 对象?

如何在测试之间重置 Redux?