在Nodejs中使用MySQL資料庫的最佳實踐是什麼?

時間 2021-06-03 01:56:08

1樓:陳厚來

玩不來sql那些高階語法,我就寫了把鎖,鎖住表項,然後放心大膽改,沒事。

比如這個使用者表 --

`id_user

`INT

UNSIGNED

NOTNULL

AUTO_INCREMENT

COMMENT

'使用者編號',`

email

`VARCHAR(45

)NULL,`

balance

`BIGINT

NULL

COMMENT

'帳戶餘額',`

password

`VARCHAR(45

)NULL

COMMENT

'加密後的使用者密碼'

,操作的時候對 id_user加鎖,比起搞sql過程來做,穩定可靠,節省腦細胞。

varkey_mutex

=require

('key_mutex'

);var

my_mutex

=key_mutex

.mutex

();//互斥量

varmysql

=require

('promise-mysql'

);var

pool

=mysql

.createPool

(...);

varid_user

=某個使用者id

;mutex_user

.lock

(id_user

,async

()=>

);key_mutex庫,我開源在這裡了xhawk18/key_mutex,

也可以通過 npm install key_mutex 安裝。

2樓:Grissom

pool程式啟動的時候就建立,全程不需要關閉。

一定要考慮併發(僅僅是併發,還不是高併發)下的業務邏輯問題,盡量用樂觀鎖解決問題,樂觀鎖是指 update table set a = new_value where version = old_version 這種類似形式,根據返回的affected rows 判斷是否更新成功。

讀寫操作盡量去用記憶體快取/佇列化處理,給mysql的最平緩的壓力。

少用事務。

避免單錶 or 單行同時的讀寫壓力。

order by, group by,count(*) 加 join 這種操作大多效率低下,能避開就避開。

可以偶爾的反正規化設計,但需考慮如果資料不一致了怎麼辦,plan b能同步回來就問題不大。

快取快取還是快取用記憶體換mysql壓力記憶體可以LRU沒那麼容易爆 mysql壓力大了很容易進入雪崩。

以上都是實戰踩坑出來的瞎扯淡 /逃

3樓:小芋頭君

1. 請一直使用pool,沒有何時。

2. pool在程式初始化的時候建立,無需銷毀,從中抽取例項連線就行,無需關心細節,也無需手動連線和關閉。

3. 推薦使用乙個ORM庫,例如 sequelize之類的,很多,包括我們公司自產的 toshihiko,可以簡化掉很多細節

4. 多級連線沒什麼需要注意的,主要是通過內網ip連線,做好環境隔離,保證mysql服務的連線數夠用,合理設定每個服務的pool大小。

5. 資料庫設計是門大學問,資料庫優化也是門大學問,祝好

為什麼在 Mathematica 中使用迴圈是低效的?

yi feng 沒用過該軟體,僅從寫程式的角度來回答這個問題,若有偏頗或者錯誤請提醒或者摺疊。程式都有空間與時間之間的矛盾,也就是說某種資料結構及演算法在面對不同型別問題時不可能總是最省記憶體又算得最快的,但在面對某一類問題時是最好的。同一問題,該軟體有多種寫法,不同寫法在內部由不同演算法和資料結構...

Go中,使用runtime Gosched,time Sleep哪個效能更好?

成雋 sleep不精確啊。https 這個bug已經留了2個大版本還沒解決。 假裝懂程式設計 從cpu利用率來說runtime.Gosched應該更好吧,都是讓出cpu,runtime.Gosched讓出後,後續交給go本身的runtime去排程,不需要像sleep那樣自己定義time,runtim...

有沒有辦法在onenote (Mac)中使用latex命令輸入公式?

王家盛 解決方案主要為將 Unicodemath 編碼格式轉化為 latex 方式。Onenote輸入公式 alt 語法為 Unicodemath UnicodeMath編碼教程 櫻花贊 部落格園 通用的公式輸入為latex 可以直接從Axmath中複製出來 關鍵一步在於 alt Onenote選單...