Linux上SQLite性能长了


说有个网站对一串Linux内核上桌面软件的性能进行了评测,使用的是Ubuntu那个公司出的一系列纯内核,不打补丁的,从2.6.24到2.6.29,其他软件都是标准的Ubuntu 8.10,包括X Server 1.5.2, GCC 4.3.2, GNOME 2.24.1, xf86-video-intel 2.4.1, Mesa 7.2, EXT3文件系统。

在许多桌面应用相关的性能当中,有两项进步非常大,一项是OpenSSL的RSA 4096位签名,性能从2.6.28到2.6.29提升了一倍,另一项是SQLite,执行12500个数据库插入操作的时间又恢复到2.6.24时代的水平,比2.6.26/27/28的100多秒的用时少了很多,只用时28秒。

SQLite这个性能很关键,是因为现在用它的软件越来越多,著名的就是Firefox,它把用户浏览历史、书签、搜索、下载等等这些记录性质的东西全部存在SQLite数据库里,性能低的话很要命。以前迫不得已只好关闭最大的用于分辨低俗危险网站的urlcassifier功能。后来发现那个著名的Awesomebar,也就是地址栏上自动地智能地匹配用户输入的功能也很要命,反应太慢,好机器可能不明显,T40这样的老机器就受不了,只好关闭匹配项到0,但又不爽,只好开到2或3,似乎要好一些。

当时Firefox 3推出时正好碰上的就是2.6.26,看来是性能正好差了,据说原因是Linux上面文件系统等等什么的问题;等到2.6.29进Debian了,再看看性能有无改善吧。

在此之前,还有人发掘出来一个SQLite操作,VACUUM命令,差不多是对数据库进行整理排序的操作,整理之后也许能快点。

上面那个Ubuntu blog上给出的是个脚本,每次启动Fx都对Profile目录下的sqlite数据库进行整理,应该是挺有用的。我的Places.sqlite现在有13MB大,整理之后小了3MB,在地址栏上用似乎是快了一点

整理命令是:sqlite3 places.sqlite 'VACUUM;' 。

cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。

相关内容