A. NodeJS,mysql2/promise,連接池執行,將數據復制到另一個資料庫
產品開發了新版本,數據不兼容,新版本的數據結構比舊版本復雜一些,目前,舊版本是在線系統,需要將舊版本程序的數據適配至新版本程序。資料庫是MySQL,這里選擇使用NodeJS來完成。
使用的版本:
需要的依賴
案例一,單表的數據同步:
databasemysqlmysql.tools.js
databasemysql2mysql2.tools.js
syncdata0.basesyncData.js
syncdata1.manufactormain.manufactor.js
syncdata2.brandmain.brand.js
syncdata3.categorymain.category.js
案例二,關聯表的數據同步:
databasemysql2mysql2.promise.tools.js
syncdata4.general_namemain.general_name.js
syncdata5.goodsmain.goods.js
B. nodejs簡單訪問及操作mysql資料庫的方法示例
本文實例講述了nodejs簡單訪問及操作mysql資料庫的方法。分享給大家供大家參考,具體如下:
var
mysql
=
require('mysql');
//調用MySQL模塊
mysql模塊要安裝
$
npm
install
mysql
//創建一個connection
var
connection
=
mysql.createConnection({
host
:
'127.0.0.1',
//主機
user
:
'root',
//MySQL認證用戶名
password
:
'',
//MySQL認證用戶密碼
port:
'3306',
//埠號
database:''
//資料庫名
});
//創建一個connection
connection.connect(function(err){
if(err){
console.log('[query]
-
:'+err);
return;
}
console.log('[connection
connect]
succeed!');
});
//執行SQL語句
connection.query('SELECT
1
+
1
AS
solution',
function(err,
rows,
fields)
{
if
(err)
{
console.log('[query]
-
:'+err);
return;
}
console.log('The
solution
is:
',
rows[0].solution);
});
//關閉connection
connection.end(function(err){
if(err){
return;
}
console.log('[connection
end]
succeed!');
});
註:nodejs在操作資料庫的時候不用設置資料庫的編碼格式
set
names
utf8
希望本文所述對大家nodejs程序設計有所幫助。
您可能感興趣的文章:nodejs連接mysql資料庫簡單封裝示例-mysql模塊nodejs進階(6)—連接MySQL資料庫示例nodejs實現的連接MySQL資料庫功能示例Nodejs連接mysql並實現增、刪、改、查操作的方法詳解nodeJs實現基於連接池連接mysql的方法示例nodejs中操作mysql資料庫示例NodeJS鏈接MySql資料庫的操作方法Nodejs使用mysql模塊之獲得更新和刪除影響的行數的方法NodeJs使用Mysql模塊實現事務處理實例nodejs連接mysql資料庫及基本知識點詳解
C. 關於nodejs下redis/mysql需不需要連接池的問題
mysql會為每個連接創建一個單獨的線程來查詢。不同於redis數據基本都在內存中,因為mysql會有大量的讀取磁碟的IO操作,所以多個線程一起工作會比一個個查詢要快。
但是nodejs又是單線程的,它能不能同時發送多個請求到mysql伺服器上呢?
這里要理解nodejs的運作,雖然nodejs是一個主線程,但是它調用的IO指令等是通過另外的線程去做的,IO指令完成後就給主線程一個小任務片,也就是回調函數了。
這里有個很關鍵的點就是,nodejs主線程一個,但是IO線程會有多個。
因此如果用nodejs + mysql只用單個連接的話那麼就利用不到mysql能同時服務多個查詢的優勢了。應該使用類似下圖的運作方式,nodejs 使用多個連接來連接mysql。多連接是需要連接池的,有連接池就避免了每次連接都要去創建銷毀的消耗了。
D. nodejs 使用node-mysql 中間件的普通連接與連接池連接哪個好
建議使用中間件連接,操作資料庫的代碼更加簡單。我們的後台介面就是用的中間件連接。nodejs的設計特點,使得他本身就很快,即使是讀寫資料庫這樣耗時的操作。用連接池的目的其實就是想就加快資料庫的IO速度。因此如果用nodejs,使用普通連接足矣!
E. 【node】nodejs promise-mysql 處理事務
項目用到了node來做後台服務端,自然避免不了要用redis、sql等等。在mysql中挑了promise-mysql來做,其中的pool連接池用著挺方便的。
但最近的業務需要用上事務,官方文檔貌似沒有特別的說明。
源碼的pool有個getConnection的方法,同時return new PoolConnection
再看看這個PoolConnection,調用了Connection.call(this, null, _connection),說明具有connection的所有功能
便可追進Connection裡面看,有beginTransaction,query,commit,rollback,足夠我們使用,另外PoolConnection裡面還有release方法,保證了pool連接池的不用destroy掉這個connection。
不說廢話,直接貼碼
F. node mssql 連接池
generic-pool模塊是nodejs的一個第三方模塊,其作用為提供一個通用的連接池模塊,可以通過generic-pool實現對tcp連接池或者MySQL資料庫連接池等的管理。github的地址如下:https://github.com/coopernurse/node-pool
// Create a MySQL connection pool with
// a max of 10 connections, a min of 2, and a 30 second max idle time
var Pool = require('generic-pool').Pool;
var mysql = require('mysql'); // v2.10.x
var pool = new Pool({
name : 'mysql',
create : function(callback) {
var c = mysql.createConnection({
user: 'scott',
password: 'tiger',
database:'mydb'
})
// parameter order: err, resource
callback(null, c);
},
destroy : function(client) { client.end(); },
max : 10,
// optional. if you set this, make sure to drain() (see step 3)
min : 2,
// specifies how long a resource can stay idle in pool before being removed
idleTimeoutMillis : 30000,
// if true, logs via console.log - can also be a function
log : true
});