最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

存儲(chǔ)過(guò)程與SQL語(yǔ)句的區(qū)別

2022-07-14 14:21 作者:限量版范兒  | 我要投稿

存儲(chǔ)過(guò)程(Stroed Proceduer)是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后,存儲(chǔ)在數(shù)據(jù)庫(kù)中。用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程有參數(shù))來(lái)執(zhí)行它。再運(yùn)行存儲(chǔ)過(guò)程前,數(shù)據(jù)庫(kù)已對(duì)其進(jìn)行了語(yǔ)法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過(guò)程可極大地改善SQL語(yǔ)句的性能。由于執(zhí)行SQL語(yǔ)句的大部分工作已經(jīng)完成,所以存儲(chǔ)過(guò)程能以雞塊的速度執(zhí)行。

SQL語(yǔ)句即結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language),是一種特殊目的的編程語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng);同時(shí)也是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。SQL語(yǔ)句無(wú)論是種類還是數(shù)量都是繁多的,很多語(yǔ)句也是經(jīng)常要用到的,SQL查詢語(yǔ)句就是一個(gè)典型的例子,無(wú)論是高級(jí)查詢還是低級(jí)查詢,SQL查詢語(yǔ)句的需求是最頻繁的。

存儲(chǔ)過(guò)程包含SQL語(yǔ)句。

存儲(chǔ)過(guò)程的代碼建立與規(guī)則,已經(jīng)在之前的文章中涉及該篇不再贅述,點(diǎn)擊鏈接查看:存儲(chǔ)過(guò)程的創(chuàng)建與修改,存儲(chǔ)過(guò)程的創(chuàng)建規(guī)則。

存儲(chǔ)過(guò)程的優(yōu)點(diǎn):
存儲(chǔ)過(guò)程是一組預(yù)先創(chuàng)建并用指定的名稱存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的 SQL 語(yǔ)句,將使用比較頻繁或者比較復(fù)雜的操作,預(yù)先用 SQL 語(yǔ)句寫好并存儲(chǔ)起來(lái),以后當(dāng)需要數(shù)據(jù)庫(kù)提供相同的服務(wù)時(shí),只需再次執(zhí)行該存儲(chǔ)過(guò)程。

1.具有更好的性能

存儲(chǔ)過(guò)程是預(yù)編譯的,只在創(chuàng)建時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而一般 SQL 語(yǔ)句每執(zhí)行一次就編譯一次,因此使用存儲(chǔ)過(guò)程可以提高數(shù)據(jù)庫(kù)執(zhí)行速度。

2.功能實(shí)現(xiàn)更加靈活

存儲(chǔ)過(guò)程中可以應(yīng)用條件判斷和游標(biāo)等語(yǔ)句,有很強(qiáng)的靈活性,可以直接調(diào)用數(shù)據(jù)庫(kù)的一些內(nèi)置函數(shù),完成復(fù)雜的判斷和較復(fù)雜的運(yùn)算。

3.減少網(wǎng)絡(luò)傳輸

復(fù)雜的業(yè)務(wù)邏輯需要多條 SQL 語(yǔ)句,當(dāng)客戶機(jī)和服務(wù)器之間的操作很多時(shí),將產(chǎn)生大量的網(wǎng)絡(luò)傳輸。如果將這些操作放在一個(gè)存儲(chǔ)過(guò)程中,那么客戶機(jī)和服務(wù)器之間的網(wǎng)絡(luò)傳輸就會(huì)減少,降低了網(wǎng)絡(luò)負(fù)載。

4.具有更好的安全性

(1)數(shù)據(jù)庫(kù)管理人員可以更好的進(jìn)行權(quán)限控制,存儲(chǔ)過(guò)程可以屏蔽對(duì)底層數(shù)據(jù)庫(kù)對(duì)象的直接訪問(wèn),使用 EXECUTE 權(quán)限調(diào)用存儲(chǔ)過(guò)程,無(wú)需擁有訪問(wèn)底層數(shù)據(jù)庫(kù)對(duì)象的顯式權(quán)限。

(2)在通過(guò)網(wǎng)絡(luò)調(diào)用過(guò)程時(shí),只有對(duì)執(zhí)行過(guò)程的調(diào)用是可見(jiàn)的。無(wú)法看到表和數(shù)據(jù)庫(kù)對(duì)象名稱,不能嵌入SQL 語(yǔ)句,有助于避免 SQL 注入攻擊。

存儲(chǔ)過(guò)程的弊端:
1.架構(gòu)不清晰,不夠面向?qū)ο?/p>

存儲(chǔ)過(guò)程不太適合面向?qū)ο蟮脑O(shè)計(jì),無(wú)法采用面向?qū)ο蟮姆绞綄I(yè)務(wù)邏輯進(jìn)行封裝,業(yè)務(wù)邏輯在存儲(chǔ)層實(shí)現(xiàn),增加了業(yè)務(wù)和存儲(chǔ)的耦合,代碼的可讀性也會(huì)降低,

2.開(kāi)發(fā)和維護(hù)要求比較高

存儲(chǔ)過(guò)程的編寫直接依賴于開(kāi)發(fā)人員,如果業(yè)務(wù)邏輯改動(dòng)較多,需要頻繁直接操作數(shù)據(jù)庫(kù),大量業(yè)務(wù)降維到數(shù)據(jù)庫(kù),很多異常不能在代碼中捕獲,出現(xiàn)問(wèn)題較難排查,需要數(shù)據(jù)庫(kù)管理人員的幫助。

3.可移植性差

過(guò)多的使用存儲(chǔ)過(guò)程會(huì)降低系統(tǒng)的移植性。在對(duì)存儲(chǔ)進(jìn)行相關(guān)擴(kuò)展時(shí),可能會(huì)增加一些額外的工作。

存儲(chǔ)過(guò)程與SQL語(yǔ)句如何抉擇
架構(gòu)設(shè)計(jì)沒(méi)有絕對(duì),只有在當(dāng)前的場(chǎng)景下最合適的。

普通的項(xiàng)目開(kāi)發(fā)中,不建議大量使用存儲(chǔ)過(guò)程,對(duì)比SQL語(yǔ)句,存儲(chǔ)過(guò)程適用于業(yè)務(wù)邏輯復(fù)雜,比較耗時(shí),同時(shí)請(qǐng)求量較少的操作,例如后臺(tái)大批量查詢、定期更新等。

(1)當(dāng)一個(gè)事務(wù)涉及到多個(gè)SQL語(yǔ)句時(shí)或者涉及到對(duì)多個(gè)表的操作時(shí)可以考慮應(yīng)用存儲(chǔ)過(guò)程
(2)在一個(gè)事務(wù)的完成需要很復(fù)雜的商業(yè)邏輯時(shí)可以考慮應(yīng)用存儲(chǔ)過(guò)程
(3)比較復(fù)雜的統(tǒng)計(jì)和匯總可以考慮應(yīng)用后臺(tái)存儲(chǔ)過(guò)程

資料來(lái)源:https://www.cnblogs.com/binyue/p/6442310.html

存儲(chǔ)過(guò)程與sql語(yǔ)句的區(qū)別:
1、編寫

存儲(chǔ)過(guò)程:編寫比較難;

sql語(yǔ)句:相對(duì)簡(jiǎn)單;

2、性能

存儲(chǔ)過(guò)程:高,可移植性高,復(fù)用性高;

sql語(yǔ)句:低,可移植性差,不可復(fù)用;

3、安全

存儲(chǔ)過(guò)程:比sql語(yǔ)句相對(duì)來(lái)說(shuō)安全;

sql語(yǔ)句:參數(shù)化比較安全;

4、網(wǎng)絡(luò)傳輸

存儲(chǔ)過(guò)程:數(shù)據(jù)量小,減少網(wǎng)絡(luò)數(shù)據(jù)傳輸量,只需存儲(chǔ)過(guò)程名即可;

sql語(yǔ)句:數(shù)據(jù)類量大,占用帶寬大;

5、速度

存儲(chǔ)過(guò)程:速度快,已經(jīng)編譯過(guò)了;

sql語(yǔ)句:預(yù)編譯,執(zhí)行一行編譯一行;

原文鏈接:https://www.dianjilingqu.com/380330.html

存儲(chǔ)過(guò)程與SQL語(yǔ)句的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南漳县| 金门县| 白朗县| 额尔古纳市| 沭阳县| 大兴区| 剑川县| 大渡口区| 石渠县| 视频| 廉江市| 惠安县| 襄汾县| 城步| 天门市| 青冈县| 仁寿县| 唐海县| 三江| 五莲县| 海城市| 磐安县| 正蓝旗| 新巴尔虎右旗| 牡丹江市| 兴文县| 潼南县| 霞浦县| 新泰市| 东海县| 高邑县| 黄平县| 诸城市| 五家渠市| 岑巩县| 赣榆县| 舞钢市| 陆丰市| 正镶白旗| 翼城县| 罗江县|