設定交易隔離等級

為了設定交易隔離層級,應用程式使用 SQL_ATTR_TXN_ISOLATION 連線屬性。 若資料來源不支援所請求的隔離等級,驅動程式或資料來源可設定更高的隔離等級。 為了判斷資料來源支援的交易隔離層級及預設隔離層級,應用程式會呼叫 SQLGetInfo ,並分別提供 SQL_TXN_ISOLATION_OPTION 與 SQL_DEFAULT_TXN_ISOLATION 選項。

較高的交易隔離層級能為資料庫資料的完整性提供最佳保護。 可序列化的交易保證不受其他交易影響,因此能維持資料庫完整性。

然而,較高的交易隔離層級可能導致效能變慢,因為這增加了應用程式必須等待資料鎖定釋放的機率。 應用程式可在以下情況下指定較低的隔離層級以提升效能:

  • 當可以保證沒有其他交易可能干擾應用程式交易時。 這種情況僅發生在有限情況下,例如小型公司中的某人在一台電腦上維護包含人事資料的 dBASE 檔案,且不分享這些檔案。

  • 速度比準確度更重要,任何誤差通常都很小。 舉例來說,假設一家公司有許多小額銷售,而大額銷售很少見。 一筆估計所有未成交總價值的交易,可以安全地使用「Read Uncommitted」隔離層級。 雖然交易中會包含被開通或關閉且隨後被回滾的訂單,但這些訂單通常會相互抵銷,因此交易速度會更快,因為每次遇到這類訂單時不會被阻塞。

欲了解更多資訊,請參閱 樂觀並發