我有一个很小的加密sqlite测试数据库。我运行一个非常简单的select:表中只有一条记录,其中包含一条记录。该请求耗时非常长:0.3秒。
lesnik@westfall:~/Projects/ls$ cat sql_enc.sql
PRAGMA KEY = "DUMMYKEYDUMMYKEY";
SELECT * FROM 'version';
lesnik@westfall:~/Projects/ls$
lesnik@westfall:~/Projects/ls$ time sqlcipher rabbits_enc.sqlite3 < sql_enc.sql
key ver
---------- ----------
1 aaa
real 0m0.299s
user 0m0.297s
sys 0m0.000s
实验表明,时间不依赖于脚本中的请求数量,也不依赖于数据库的大小(此测试数据库仅为5kb,结果与500kb数据库相同)
如果数据库未加密,则不会出现此类问题。
在另一个Linux安装上(在同一主机上的不同Virtual Box中),性能稍好。而且在另一个Linux安装上也没有这个问题(脚本执行时间大约为0.001s),所以我相信这是环境的问题。但是我不知道如何进一步调查这个问题。任何帮助表示赞赏。