由于内存资源有限,我最近试图在 Node.js 和 node-sqlite3 上建立一个小型网站。以前用Python建过一个类似的小型网站,发现node-sqlite3与Python的sqlite3模块相比,似乎相当迟钝。我对两者都进行了 1000 次 SELECT 操作,发现 node-sqlite3 需要几乎两倍的时间才能完成。有没有其他人注意到同样的事情?如果我想继续使用 Node.js,对优化数据库访问有什么建议吗?
更新:我添加了用于测试的代码:
节点.js:
var sqlite3 = require('sqlite3').verbose();
var util=require('util');
var dbfn = './db.sqlite';
var db = new sqlite3.Database(dbfn,sqlite3.OPEN_READONLY, function(err) {
if(err) {
console.log(err);
} else {
var perpage=10,max=500,table='data2012',kw='sa';
for(var offset=1;offset<max;offset+=perpage) {
stmt = util.format('select * from %s where xxx like "%s%" limit %d offset %d',table, kw, perpage, offset);
db.all(stmt);
}
}
});
Python:
import sqlite3
DATABASE = './db.sqlite'
db=None
try:
db = sqlite3.connect(DATABASE)
except:
sys.stderr.write(os.getcwd())
table='data2011'
kw=('sa%',)
perpage=10
max=500
for offset in xrange(1,max,perpage):
stmt = 'select * from %s where xxx like ? limit %d offset %d'%(table, perpage, offset)
rs = db.execute(stmt, kw)
rs.fetchall()
db.close()