天天看點

nodejs mysql性能測試_基于NodeJS的sqlite3插入性能測試

我的機器上有兩塊存儲一塊是固态硬碟一塊是機械硬碟,為了更好的反映實際的使用環境,程式運作選擇的是使用機械硬碟。作業系統是裝在固态硬碟上面。

測試環境及運作版本:

NodeJS的運作版本:v4.6.0

$ node -v

v4.6.0

Asynchronous, non-blocking SQLite3 bindings

nodejs mysql性能測試_基于NodeJS的sqlite3插入性能測試

安裝

npm install node-pre-gyp nan

cnpm install sqlite3

測試結果:

單條資料插入

在350毫秒

批量插入100條資料

使用prepare插入100條資料所需要的時間是8980毫秒;

使用run插入100條資料所需要的時間是9027毫秒;

目前的版本不支援事務處理,插入1000條資料會在一分鐘以上。

最後上測試代碼:

var fs = require('fs');

var path = require('path');

var sqlite3 = require('sqlite3').verbose();

var strtxt = "這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款這款sqlite的驅動太符合node的核心思想了,經過與其他子產品的比較,最終還是選擇了這款經過與其他子產品的比較,最終還是選擇了這款最終還是選擇了這款最";

//new sqlite3.cached.Database() instead of new sqlite3.Database().

var db = new sqlite3.cached.Database('test.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, function(err) {

if (err) {

console.log('err:' + err);

} else {

console.log('success create database !');

}

});

db.serialize(function() {

db.run('CREATE TABLE IF NOT EXISTS node ( \

_id INTEGER PRIMARY KEY AUTOINCREMENT,\

node_id TEXT NOT NULL,\

parent_id TEXT,\

owner_id INTEGER,\

source_id TEXT,\

title TEXT,\

content TEXT,\

content_type INTEGER,\

node_version INTEGER,\

type INTEGER ,\

child_list TEXT,\

collapsed INTEGER,\

isShare INTEGER,\

isReference INTEGER\

);', function(err) {

if (err) {

console.log('create table node failed !');

} else {

console.log('create table node sucess !');

}

});

});

db.serialize(function() {

var start = new Date();

db.run("INSERT INTO node(node_id,title) VALUES (?,?);", ['123', strtxt], err => {

var end = new Date();

console.log('insert one record :', end.getTime() - start.getTime());

});

});

db.serialize(function() {

var start = new Date();

var stmt = db.prepare("INSERT INTO node(node_id,title) VALUES (?,?);");

for (var i = 0; i < 100; i++) {

stmt.run([i, strtxt + i]);

}

stmt.finalize(function(err) {

var end = new Date();

console.log('bulk insert 100 records :', end.getTime() - start.getTime());

});

});

db.serialize(function() {

var mysql = "";

for (var i = 0; i < 100; i++) {

mysql += "INSERT INTO node(node_id,title) VALUES (" + i + ",'" + strtxt + i + "');"

}

console.log(mysql);

var start = new Date();

db.run(mysql, [], err => {

var end = new Date();

console.log('bulk sql insert 100 records :', end.getTime() - start.getTime());

});

});

db.close();