千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 在Nodejs中使用MySQL數(shù)據(jù)庫(kù)的優(yōu)異實(shí)踐是什么?

在Nodejs中使用MySQL數(shù)據(jù)庫(kù)的優(yōu)異實(shí)踐是什么?

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-13 03:26:40 1697138800

一、在Nodejs中使用MySQL數(shù)據(jù)庫(kù)的優(yōu)異實(shí)踐


1. 請(qǐng)一直使用pool,沒(méi)有何時(shí)。

2. pool在程序初始化的時(shí)候創(chuàng)建,無(wú)需銷毀,從中抽取實(shí)例連接就行,無(wú)需關(guān)心細(xì)節(jié),也無(wú)需手動(dòng)連接和關(guān)閉。

3. 推薦使用一個(gè)ORM庫(kù),例如 sequelize之類的,很多,包括我們公司自產(chǎn)的 toshihiko,可以簡(jiǎn)化掉很多細(xì)節(jié)

4. 多級(jí)連接沒(méi)什么需要注意的,主要是通過(guò)內(nèi)網(wǎng)ip連接,做好環(huán)境隔離,保證mysql服務(wù)的連接數(shù)夠用,合理設(shè)置每個(gè)服務(wù)的pool大小。

5. 數(shù)據(jù)庫(kù)設(shè)計(jì)是門(mén)大學(xué)問(wèn),數(shù)據(jù)庫(kù)優(yōu)化也是門(mén)大學(xué)問(wèn)。

pool程序啟動(dòng)的時(shí)候就建立,全程不需要關(guān)閉。一定要考慮并發(fā)(僅僅是并發(fā),還不是高并發(fā))下的業(yè)務(wù)邏輯問(wèn)題,盡量用樂(lè)觀鎖解決問(wèn)題,樂(lè)觀鎖是指 update table set a = new_value where version = old_version 這種類似形式,根據(jù)返回的affected rows 判斷是否更新成功。

讀寫(xiě)操作盡量去用內(nèi)存 緩存/隊(duì)列化處理,給mysql的最平緩的壓力。少用事務(wù)。

避免單表 or 單行 同時(shí)的讀寫(xiě)壓力。order by, group by,count(*) 加 join 這種操作大多效率低下,能避開(kāi)就避開(kāi)。

可以偶爾的反范式設(shè)計(jì),但需考慮如果數(shù)據(jù)不一致了怎么辦,plan b能同步回來(lái)就問(wèn)題不大。緩存,緩存,還是緩存。用內(nèi)存換mysql壓力 內(nèi)存可以LRU沒(méi)那么容易爆 mysql壓力大了很容易進(jìn)入雪崩。

延伸閱讀:

二、全文索引

FULLTEXT(全文)索引,僅可用于MyISAM和InnoDB,針對(duì)較大的數(shù)據(jù),生成全文索引非常的消耗時(shí)間和空間。對(duì)于文本的大對(duì)象,或者較大的CHAR類型的數(shù)據(jù),如果使用普通索引,那么匹配文本前幾個(gè)字符還是可行的,但是想要匹配文本中間的幾個(gè)單詞,那么就要使用LIKE %word%來(lái)匹配,這樣需要很長(zhǎng)的時(shí)間來(lái)處理,響應(yīng)時(shí)間會(huì)大大增加,這種情況,就可使用時(shí)FULLTEXT索引了,在生成FULLTEXT索引時(shí),會(huì)為文本生成一份單詞的清單,在索引時(shí)及根據(jù)這個(gè)單詞的清單來(lái)索引。FULLTEXT可以在創(chuàng)建表的時(shí)候創(chuàng)建,也可以在需要的時(shí)候用ALTER或者CREATE INDEX來(lái)添加。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
MySQL里的year_month的用法是什么?

一、MySQL里的year_month的用法是什么year_month估計(jì)是自定義函數(shù)吧,系統(tǒng)函數(shù)里沒(méi)有這個(gè)。猜測(cè)你的需求是獲取年和月,參考SELECT DATE_FORMAT(...詳情>>

2023-10-13 04:59:46
Oracle數(shù)據(jù)庫(kù)的實(shí)例是什么?

一、Oracle數(shù)據(jù)庫(kù)的實(shí)例Oracle實(shí)例指的是由Oracle內(nèi)存結(jié)構(gòu)(SGA)和Oracle進(jìn)程組合在一起的統(tǒng)稱,是一系列復(fù)雜的內(nèi)存結(jié)構(gòu)和操作系統(tǒng)進(jìn)程;在任...詳情>>

2023-10-13 04:34:10
oracle數(shù)據(jù)庫(kù)有什么優(yōu)勢(shì)?

一、oracle數(shù)據(jù)庫(kù)有什么優(yōu)勢(shì)1、Oracle是大型數(shù)據(jù)庫(kù)而Mysql是中小型數(shù)據(jù)庫(kù),Oracle市場(chǎng)占有率達(dá)40%,Mysql只有20%左右,同時(shí)Mysql是開(kāi)源的而Orac...詳情>>

2023-10-13 04:33:00
為什么不用key-value型數(shù)據(jù)庫(kù)實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)?

一、為什么不用key-value型數(shù)據(jù)庫(kù)實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)TiDB / CockroachDB 都是基于 KV 模型做的分布式關(guān)系型數(shù)據(jù)庫(kù)。TiDB 實(shí)際上是構(gòu)建在 TiKV + p...詳情>>

2023-10-13 04:21:53
關(guān)系型數(shù)據(jù)庫(kù)是什么?

一、什么是關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)是按照關(guān)系模型組織和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)。它使用表格(表)的形式來(lái)表示和存儲(chǔ)數(shù)據(jù),每個(gè)表代表一個(gè)實(shí)體,而...詳情>>

2023-10-13 04:12:45
快速通道
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
特级国产午夜理论不卡 | 亚洲综合精品伊人久久 | 中文字幕大看蕉永久网 | 久久婷婷综合一区二区 | 日本亚洲中文字幕网 | 日本精品一区二区三区高清 |