辛星解讀mysql中的預存程序的優劣,辛星mysql

來源:互聯網
上載者:User

辛星解讀mysql中的預存程序的優劣,辛星mysql

       我們常用的SQL語句在執行的時候需要首先進行編譯,然後執行,而預存程序則是一組為了完成特定功能的SQL語句集,它直接編譯好了儲存在資料庫中,使用者通過指定預存程序的名字即可調用該預存程序。

      預存程序的優點主要包括以下幾點:

      第一點,效能提高。這是相對於不適用預存程序來說的,因為預存程序在建立的時候就編譯好了,而後每次調用都不會再次編譯,這相對於傳統的SQL語句中每次調用都需要編譯的情況來說,效能提高了何止一點兩點。

     第二點,重用性強。預存程序使用名字即可使用,也就是傳說中的“一次編寫,隨便調用”。這樣不僅提高了重用性,還減少了出錯的幾率,也會加快開發速度,可以說是一件非常好的事情。

    第三點,減少網路流量。這一點對於小資料量的時候一般體現不出來,那麼當資料量較大的時候,我們會發現由於使用預存程序比使用SQL語句會使用更少的位元組數,因此它會降低傳輸的資料量。

     第四點,安全性提高。由於預存程序也可以使用許可權控制,而且參數化的預存程序可以防止SQL注入攻擊,也在一定程度上保證了安全性。

     第五點,靈活性增強。由於預存程序可以使用流程式控制制語句來編寫,導致它有著很強的靈活性,可以根據實際情況來執行不同的SQL語句,而不是只能單純的簡單的執行命令。而且該預存程序還可以修改其邏輯而其他部分不用改變,也就是說,我們的表的結構改變了,我們只需要修改相應的預存程序即可,我們的Java或者PHP等程式不需要改變。

    第六點,當業務複雜的時候,預存程序會減少工作量,為什麼呢,原因很簡單,如果我們不適用預存程序,那麼就會導致我們先從資料庫中取出來資料,然後經過計算,再放入到資料庫中,這個開銷還是蠻大的,這中間的開銷包括我們的Java或者PHP程式串連資料庫擷取結果集等若干操作,如果我們使用了預存程序,那麼就沒有那麼多事了,直接在mysql內就搞定了。

     好,上面說完了預存程序的優點,當然預存程序也肯定有它的缺點,下面是它的幾個缺點:

    第一點,工作量加大。這裡並不是說我們把程式該做的事讓mysql去做不好,而是mysql本身並沒有很像樣的IDE來開發我們的預存程序,我們很多時候還是需要手寫,這樣就會比較麻煩,而且預存程序的調試也是一個問題,沒有很像樣的調試工具。

     第二點,優勢不明顯。運行速度上,對於大多數的語句緩衝來說,編譯sql的時間開銷並不是很大,但是執行預存程序還需要檢查許可權等一些其他開銷,所以,對於很簡單的sql,預存程序並沒有很大優勢。

    第三點,贅餘功能。對web程式來說,我們串連資料庫的使用者往往就是同一個,不需要太多的安全機制,所以,對於安全上的檢測看上去很好,實際上優點多餘。

    第四點,小型程式完全無用。對於小型web應用來說,它的使用價值就更小了,反而會拖累開發進度。

     第五點,對於營運上。當我們的程式要更換資料庫的時候,它的移植性相對於不適用預存程序要複雜一些,對於維護上,由於是在db端,因此比server端的程式更好維護一些。

   




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。