-
什么是存盤程序?有什么優缺點?
為以后的使用而保存的一潭訓多條MySQL陳述句的集合,
存盤程序思想上就是資料庫 SQL 語言層面的代碼封裝與重用,
是在大型資料庫系統中,一組為了完成特定功能的SQL 陳述句集,它存盤在資料庫中,一次編譯后永久有效,用戶通過指定存盤程序的名字并給出引數(如果該存盤程序帶有引數)來執行它,存盤程序是資料庫中的一個重要物件,在資料量特別龐大的情況下利用存盤程序能達到倍速的效率提升,
優點
①重復使用,存盤程序可以重復使用,從而可以減少資料庫開發人員的作業量,
②減少網路流量,存盤程序位于服務器上,呼叫的時候只需要傳遞存盤程序的名稱以及引數就可以了,因此降低了網路傳輸的資料量,
③安全性,引數化的存盤程序可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke權限應用于存盤程序,
簡單講:
1.存盤程序只在創造時進行編譯,以后每次執行存盤程序都不需再重新編譯,而一般SQL陳述句每執行一次就編譯一次,所以使用存盤程序可提高資料庫執行速度,
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存盤程序封裝起來與資料庫提供的事務處理結合一起使用,
3.存盤程序可以重復使用,可減少資料庫開發人員的作業量
4.安全性高,可設定只有某些用戶才具有對指定存盤程序的使用權
有一點需要注意的是,一些網上盛傳的所謂的存盤程序要比sql陳述句執行更快的說法,實際上是個誤解,并沒有根據,包括微軟內部的人也不認可這一點,所以不能作為正式的優點,希望大家能夠認識到這一點,
缺點
1、更改比較繁瑣:如果更改范圍大到需要對輸入存盤程序的引數進行更改,或者要更改由其回傳的資料,則仍需要更新程式集中的代碼以添加引數、更新 GetValue() 呼叫,等等,這時候估計比較繁瑣,
2、可移植性差:由于存盤程序將應用程式系結到 SQL Server,因此使用存盤程序封裝業務邏輯將限制應用程式的可移植性,如果應用程式的可移植性在您的環境中非常重要,則需要將業務邏輯封裝在不特定于 RDBMS 的中間層中,
1:除錯麻煩,但是用 PL/SQL Developer 除錯很方便!彌補這個缺點,
2:移植問題,資料庫端代碼當然是與資料庫相關的,但是如果是做工程型專案,基本不存在移植問題,
3:重新編譯問題,因為后端代碼是運行前編譯的,如果帶有參考關系的物件發生改變時,受影響的存盤程序、包將需要重新編譯(不過也可以設定成運行時刻自動編譯),
4: 如果在一個程式系統中大量的使用存盤程序,到程式交付使用的時候隨著用戶需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最后如果用戶想維護該系統可以說是很難很難、而且代價是空前的,維護起來更麻煩,
什么是視圖,視圖有什么作用?
視圖是?一個虛擬表,其內容由查詢定義,同真實表?一樣,視圖包含?一系列列帶有名稱的列列和 ?行行資料,但視圖并不不是資料庫真實存盤的資料表, 視圖是從?一個、多個表或者視圖中匯出 的表,包含?一系列列帶有名稱的資料列列和若?干條資料?行行,
1)定制用戶資料,聚焦特定的資料
2)簡化資料操作
3)提?基表資料的安全性
4)共享所需資料
5)更改資料格式
6)重用SQL陳述句
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/281332.html
標籤:其他
