2013-12-14 68 views
0

工作完成後,我幾乎總是被告知(!)關閉語句和連接。什麼是特殊情況下不應該關閉報表?

但是,我總是希望重用經常使用的語句。

有什麼情況可以重複使用語句?

+0

準備好的陳述的重點在於它們被重複使用。重新使用預準備語句可避免服務器每次都必須解析語句並創建執行計劃。只有當你真的完成了它們的時候,你才應該關閉語句。 – 2013-12-14 01:57:35

+0

@MikeW對於Web服務器,何時應該關閉語句? –

+1

@MikeW我懷疑這是使用準備語句的主要原因。我很確定這是因爲參數化查詢來防止SQL注入。 –

回答

1

完成一個工作單元(或更早的時候,如果不再需要它),您應該關閉語句(和連接)。您可以重新使用語句的示例處於緊密的循環中,您需要使用不同的輸入值執行相同的查詢(例如批量插入)。在這種情況下,您需要在循環外部準備語句,並在循環完成後關閉語句。

你不應該試圖堅持陳述(或連接)長於一個單位的工作;試圖重新使用內部代碼可能會導致不透明和難以理解的代碼,大量的鍋爐板和難以追蹤資源泄漏或其他錯誤。

唯一的例外是當您使用連接池實現(有時也提供語句池)。在那裏你不必自己想想(除了池的正確配置外),因爲你會在自然邊界上關閉一個聲明和一個連接。而不是真正關閉他們返回到連接(或語句)池。

相關問題