Re: 網管人

看板Database作者 (XXX)時間15年前 (2010/07/03 10:09), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串13/17 (看更多)
※ 引述《JoeHorn (每天都在公司玩OLG)》之銘言: : 一個 DB connection 可以執行很多次 SQL statements, : 你舉的這個例子只需要 transaction,但是.. 可以用同一個 connection。 : 更何況,很多程式語言有 connection pool 管理能力。 : (因為可以用同一個 connection,以下我就不回了.. 因為都不是考量因素) 這部份完全沒有解釋performance上的問題,用不用 connection pool 都 一樣。 一個 DB connection 的確是可以執行好幾個SQL,但要注意到的是每執行 一個SQL就是一次從client到server的 round trip。重複使用同一個 DB connection 或是用 connetion pool 只能省下 login, authetication, 和一些 initialization 的時間,但是執行每一個 SQL,還是需要從 client/ application 把 sql statement 或是 binding variable 的值傳到 server/db (當已有curosr時)。此外,執行完後 server/db 還要把結果傳 回去。這不只是傳輸時間而已,處理每一個 SQL 時,database要花時間在 解析sql statement、處理cursor、binding variable、重新取得lock上面, 非常沒有效率。 用個簡單的例子,現在有10個SQL要執行,就叫做 SQL 1 到 SQL 10 好了, SQL 10 要依據 SQL 9 的結果,SQL 9 要依據SQL 8 的結果,以此類推。用 stored procedure 只要一個 round trip,不用的話就要10次,這在效能上 有很大的差別,而且如果其中有幾個SQL要傳回大量的資料,不用 stored procedure 的效能會是最糟糕。 把 logic 放在 stored procedure 或是 application 各有利弊,但在 performance 上,使用 stored procedure 有很大的優勢。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.142.74.199

07/03 16:36, , 1F
SP效能佳,移植困難不能怪SP。但依賴SP將無法分散運算量。
07/03 16:36, 1F

07/03 16:48, , 2F
如果運算量不是系統瓶頸,我想SP能用就用。
07/03 16:48, 2F

07/03 17:17, , 3F
若運用得當,不把不相關的東西塞到同個SP,運算量不是問題
07/03 17:17, 3F

07/03 18:18, , 4F
我不知道怎分哪些不相關。我把TABLE之間的運算通通都寫SP。
07/03 18:18, 4F
文章代碼(AID): #1CBflhvb (Database)
討論串 (同標題文章)
文章代碼(AID): #1CBflhvb (Database)