簡體   English   中英

數據庫連接的良好做法

[英]Good practice in DB connection

我正在創建Delphi應用程序以連接我的數據庫。

在某些情況下,我的應用需要在一秒鍾內寫入多個條目,而在其他情況下,它則需要餓幾分鍾。

因此始終打開和關閉連接或保持打開狀態數小時是沒有意義的。

因此,我考慮過創建一個計時器(間隔= 1000),該計時器將在每個刻度上將整數從10減少到0。 當int為0時,連接將關閉。

與db交互的每個方法都將運行另一個方法,該方法將int設置為10並檢查連接是否打開,否則將打開連接。

這是數據庫處理中的好習慣,還是有其他建議。

  1. 數據庫具有不同的“加權”連接。 例如,與Oracle OCI相比,MySQL API允許快速打開連接。 因此,使用MySQL,您可以打開一個連接,執行所需的任何操作,關閉連接。 打開/關閉時間將不明顯。
  2. 數據庫具有不同的連接超時。 例如,當MySQL連接處於非活動狀態的時間長於wait_timeout / interactive_timeout ,MySQL服務器將自動關閉連接。 Oracle將根據需要保持您的連接打開。 因此,應用程序必須能夠處理該問題。
  3. 問題是關於資源的。 如果將有1萬個客戶端,並且所有連接都保持連接狀態,那么這可能會使空閑但已分配的資源使服務器過載。
  4. 問題是應用程序的復雜性。 如果必須保持許多數據集處於活動狀態,維持活動的事務等,那么重新打開連接將非常困難。
  5. 而且,當DBMS關閉連接或丟失其他連接時,某些數據訪問組件(例如AnyDAC )允許自動恢復連接( 更多 )。

因此,根據您的DBMS,數據訪問組件,應用程序需求,您必須決定要做什么。 例如:

  • 使用MySQL,1-2個客戶端,簡單的插入操作以及數分鍾的非活動延遲,我將在需要連接之前將其打開,並在工作完成后將其關閉;
  • 對於Oracle,1K客戶端等,我將使用算法,如您所述。

我認為,如果您的應用程序用戶活動並不意味着繁重的連接/斷開操作,則無需增加更多復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM