程序員說:存儲過程還是SQL語句,這是一個問題。
江湖現(xiàn)在有三個流派,一個是SQL語句流的,崇尚使用SQL語句,一派是存儲過程派的,崇尚用存儲過程說話,還有一派是中庸派的,講求和諧,所以也就前兩派吵得厲害,中庸派的看熱鬧?,F(xiàn)在SQL派的有Nhibernate為首的眾多ORM助陣,最近風(fēng)生水起比較得意,存儲過程派也有自己的殺手秘籍,兩派互不相讓,爭斗由來已久。
存儲過程派的追求速度,所謂天下無功無堅不破,唯快不破,這也是存儲過程派的人行走江湖的最大本錢。之前存儲過程派的攻擊SQL語句派的還有一個秘籍就是安全,不過現(xiàn)在都沒人用連接String的動態(tài)SQL的了,這招也就失效了。
SQL語句派是資格很老的流派,但是新手居多,老資格很多投奔敵營存儲過程派了。Java幫的人很多都是SQL語句派的,而存儲過程派的以微軟幫的居多。
不過存儲過程派也有軟肋,可移植性就是其一,還有一點就是可擴(kuò)展性,因為一般大型的Web應(yīng)用程序都是多Web服務(wù)器,然后用雙數(shù)據(jù)庫服務(wù)器做雙機(jī)熱備,其中一臺開機(jī),但是是閑置的,這里只是解決單點故障的問題,但是形成了多Web應(yīng)用服務(wù)器,單數(shù)據(jù)庫服務(wù)器的情況,如果所有的運算都用存儲過程實現(xiàn),那么會造成數(shù)據(jù)庫服務(wù)器負(fù)擔(dān)過重,而Web服務(wù)器負(fù)荷不足的情況,而擴(kuò)展數(shù)據(jù)庫服務(wù)器的話就會非常的麻煩,而且投資較大,程序也需要改,而投資Web服務(wù)器就相對便宜而且擴(kuò)容更加簡單。
人在江湖漂哪有不挨刀,所以中庸一點比較保險,我比較傾向于用把較多的負(fù)擔(dān)放到程序里來,而降低數(shù)據(jù)庫得負(fù)擔(dān),因為只要數(shù)據(jù)庫扛得住,再增加Web服務(wù)器那是比較容易的,但是一旦數(shù)據(jù)庫服務(wù)器扛不住了我們就只有哭了。一般報表阿,還有一些結(jié)果集比較復(fù)雜的我就用存儲過程來包裝,一般的查詢和CUID操作我都是找個ORM來搞定。
引自:http://www.cnblogs.com/Alexander-Lee/archive/2007/04/01/696070.html