共用方式為


並行

並行是多使用者同時存取資料的能力。當資料庫可支援的同時作業數量相當大時,就會增加資料庫並行。在 MicrosoftSQL Server Compact 中,可藉由使用鎖定以保護資料來達成並行控制。鎖定控制多使用者如何同時存取和變更共用的資料,而不會彼此衝突。如需詳細資訊,請參閱<鎖定 (SQL Server Compact)>。

並行問題

如果您不管理多使用者的資料修改和讀取,可能會發生並行問題。例如,如果數個使用者同時存取資料庫,他們的交易可能會同時對相同的資料執行作業。某些在使用 SQL Server Compact 時發生的並行問題,包括下列事項︰

當兩個以上的交易選取相同的資料列時,會遺失更新,然後根據原始選取的值更新資料列。最後的更新會覆寫其他交易所做的更新,導致資料遺失。
  • 不一致的分析 (非重複讀取)。

    當第二個交易存取相同的資料列數次,且每次讀取不同的資料時,就會發生非重複讀取。這涉及相同資料列的多重讀取。資訊每次都會被其他交易變更。

  • 虛設項目讀取。

    針對交易讀取之資料列範圍中的某一資料列執行插入或刪除動作時,會發生虛設項目讀取。交易首次讀取的資料列範圍顯示資料列已不存在於後續讀取,因為已被不同的交易刪除。相同地,由於被不同交易插入,交易的後續讀取會顯示已不存在於原始讀取的資料列。

注意

一個極為常見但 SQL Server Compact 不會發生的並行問題是未認可的相依性 (中途讀取)。此問題會在第二個交易選取正被另一個交易更新的資料列時發生。第二個交易讀取的資料尚未被認可,且可能因交易更新資料列而變更。使用 MicrosoftSQL Server 時,可能會發生中途讀取。如需並行問題的詳細資訊,請參閱《SQL Server 線上叢書》的<並行效果>。

並行控制

在資料庫案例中,有兩種並行控制機制類型︰

  • 開放式並行控制

    在多使用者之間的資源衝突並不常發生,且允許交易在不鎖定任何資源的情況下執行的假設下,開放式並行存取控制才會發生作用。只有在交易試圖變更資料時,才會檢查資源。這決定是否有任何衝突發生 (例如藉由檢查版本號碼)。如果發生衝突,應用程式必須讀取資料,並再一次嘗試變更。此產品未提供開放式並行控制,但您可藉由追蹤資料庫存取,手動將其建置到應用程式中。

  • 封閉式並行控制

    封閉式並行控制在交易執行期間,會視需要鎖定資源。SQL Server Compact 支援在交易執行期間視需要鎖定資源的封閉式並行控制。

如需開放式和封閉式並行的詳細資訊,請參閱《SQL Server 線上叢書》的<並行控制類型>。

注意

某些 64 位元平台案例不支援使用舊版 SQL Server Compact 來同時存取資料庫檔案。如需有關 64 位元元件的資訊,請參閱<管理 64 位元資料庫應用程式>。

請參閱

概念

交易 (SQL Server Compact)

鎖定 (SQL Server Compact)

多使用者存取