溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

LINQ存儲(chǔ)過(guò)程有哪些優(yōu)缺點(diǎn)

發(fā)布時(shí)間:2021-12-02 09:47:20 來(lái)源:億速云 閱讀:113 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“LINQ存儲(chǔ)過(guò)程有哪些優(yōu)缺點(diǎn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“LINQ存儲(chǔ)過(guò)程有哪些優(yōu)缺點(diǎn)”吧!

一、何謂存儲(chǔ)過(guò)程?

存儲(chǔ)過(guò)程者,乃是存放在數(shù)據(jù)庫(kù)中的一個(gè)腳本也。具體地說(shuō),存儲(chǔ)過(guò)程是保存起來(lái)的、可以接受或返回用戶(hù)提供的參數(shù)的T-SQL語(yǔ)句的集合。使用存儲(chǔ)過(guò)程最基本的好處是,可以將多個(gè)SQL語(yǔ)句打包在一起作為一個(gè)組來(lái)執(zhí)行,如果在應(yīng)用程序中恰當(dāng)?shù)厥褂么鎯?chǔ)過(guò)程就可以提高應(yīng)用程序的效率。

二、存儲(chǔ)過(guò)程之優(yōu)點(diǎn)

1. 存儲(chǔ)過(guò)程通??梢詾橄到y(tǒng)帶來(lái)性能改善,因?yàn)閿?shù)據(jù)庫(kù)可以?xún)?yōu)化該過(guò)程所使用的數(shù)據(jù)訪(fǎng)問(wèn)計(jì)劃,并能為后續(xù)的重用實(shí)現(xiàn)高速緩存。

2. 存儲(chǔ)過(guò)程可以在數(shù)據(jù)庫(kù)內(nèi)部得到單獨(dú)的保護(hù)。管理員可以授予客戶(hù)端執(zhí)行存儲(chǔ)過(guò)程的權(quán)限,而不賦予它訪(fǎng)問(wèn)底層表的權(quán)限。

3. 存儲(chǔ)過(guò)程可以使得維護(hù)更加方便,因?yàn)橥ǔP薷拇鎯?chǔ)過(guò)程要比更改已部署的組件內(nèi)部硬編碼的代碼中包含的SQL語(yǔ)句更簡(jiǎn)單。但是隨著存儲(chǔ)過(guò)程實(shí)現(xiàn)的業(yè)務(wù)邏輯的增加,這一優(yōu)點(diǎn)將有所減弱。

4. 存儲(chǔ)過(guò)程在底層數(shù)據(jù)庫(kù)模式的基礎(chǔ)上增加了額外的抽象層。存儲(chǔ)過(guò)程的客戶(hù)端被隔離在存儲(chǔ)過(guò)程和底層模式的實(shí)現(xiàn)細(xì)節(jié)之外。

5. 存儲(chǔ)過(guò)程可以減少網(wǎng)絡(luò)流量。SQL語(yǔ)句可以批量執(zhí)行,應(yīng)用程序不必發(fā)送多個(gè)SQL請(qǐng)求。

三、存儲(chǔ)過(guò)程之缺點(diǎn)

在有些情況下仍然不推薦使用存儲(chǔ)過(guò)程,或者使用存儲(chǔ)過(guò)程不可行。

1.在應(yīng)用程序涉及大量的業(yè)務(wù)邏輯和處理時(shí),如果完全用存儲(chǔ)過(guò)程實(shí)現(xiàn)業(yè)務(wù)邏輯,就會(huì)給服務(wù)器帶來(lái)過(guò)多的負(fù)荷。這種類(lèi)型的處理例子包括數(shù)據(jù)傳輸、數(shù)據(jù)遍歷、數(shù)據(jù)轉(zhuǎn)換以及密集的計(jì)算操作。應(yīng)該將這一類(lèi)型的處理轉(zhuǎn)移到業(yè)務(wù)過(guò)程或者數(shù)據(jù)訪(fǎng)問(wèn)邏輯組件中,它們比數(shù)據(jù)庫(kù)服務(wù)器更具可伸縮性。

2.  不要將所有業(yè)務(wù)邏輯都放到存儲(chǔ)過(guò)程中,否則當(dāng)需要在T-SQL中修改業(yè)務(wù)邏輯時(shí),將影響應(yīng)用程序的維護(hù)和靈活性。例如,支持多個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的ISV的應(yīng)用程序不必為每個(gè)系統(tǒng)維護(hù)獨(dú)立的存儲(chǔ)過(guò)程。

3.  滲編寫(xiě)和維護(hù)存儲(chǔ)過(guò)程在大多數(shù)情況下是一項(xiàng)并非所有開(kāi)發(fā)人員都擁有的專(zhuān)門(mén)技能。這一情況可能會(huì)給項(xiàng)目開(kāi)發(fā)計(jì)劃引入瓶頸。

四、LIINQ之優(yōu)點(diǎn)
  
LINQ技術(shù)是Visual Studio 2008和.NET框架3.5中一項(xiàng)突破性創(chuàng)新,它在對(duì)象領(lǐng)域與數(shù)據(jù)領(lǐng)域架起了一座橋梁。此外,LINQ查詢(xún)功能直接可以嵌入到.NET框架3.5所支持的編程語(yǔ)言中。歸納來(lái)看,其具有如下優(yōu)勢(shì):查詢(xún)語(yǔ)法簡(jiǎn)單,易于書(shū)寫(xiě);語(yǔ)法錯(cuò)誤及查詢(xún)數(shù)據(jù)的類(lèi)型更加安全;LINQ存儲(chǔ)過(guò)程提供了較強(qiáng)的過(guò)濾、排序及分組等處理能力;易于處理多數(shù)據(jù)源和多數(shù)據(jù)格式數(shù)據(jù)。

五、LINQ時(shí)代存儲(chǔ)過(guò)程仍不可缺少

盡管LINQ存儲(chǔ)過(guò)程在新開(kāi)發(fā)環(huán)境中具備了明顯的優(yōu)勢(shì),但其在處理復(fù)雜的數(shù)據(jù)庫(kù)查詢(xún)方面仍存在性能問(wèn)題。另一方面,LINQ to SQL技術(shù)基于ADO.NET,傳統(tǒng)SQL查詢(xún)資源在一定時(shí)期內(nèi)仍普遍存在。所以,LINQ對(duì)于傳統(tǒng)SQL查詢(xún)?nèi)蕴峁┝思嫒菪灾С?。LINQ to SQL中仍可直接調(diào)用傳統(tǒng)SQL查詢(xún)語(yǔ)句及存儲(chǔ)過(guò)程中即是證明。

因此,在實(shí)際開(kāi)發(fā)中應(yīng)當(dāng)基于數(shù)據(jù)庫(kù)資源實(shí)際,在目前情況下,把LINQ查詢(xún)與適當(dāng)?shù)膫鹘y(tǒng)SQL查詢(xún)相結(jié)合仍為推薦的數(shù)據(jù)庫(kù)方案。

感謝各位的閱讀,以上就是“LINQ存儲(chǔ)過(guò)程有哪些優(yōu)缺點(diǎn)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)LINQ存儲(chǔ)過(guò)程有哪些優(yōu)缺點(diǎn)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI