fbpx
维基百科

指標 (資料庫)

資料指標(Data Cursor)或稱游標,是在資料庫引擎 (Database Engine)中,讓開發人員或資料庫管理員可以遍歷、瀏覽檢索結果的資料列(稱為資料查詢結果集, Result set),是主要用於在結果集中移動到某一資料列(row)的控制結構。游標可以被看作是指向一組列中,代表某一列的指針。游標一次只能引用一列,但可以根據需要移動到結果集的其他列。

游標有助於隨檢索之後的資料處理與遍歷相結合,如添加和刪除記錄。它能遍歷資料查詢結果集的特性,類似於編程語言的迭代器概念。開發程序人員通常依需求而使用游標,來處理由資料庫系統查詢返回的整個結果集。在這種情況下,游標可使結果集中的資料列依照次序處理。在SQL程序中,使用游標可以定義檢索集(多行資料列的條件選取組合)並逐行執行資料處理的邏輯。通過相同的機制,SQL程序也可將結果集直接返回給調用者或客戶端應用程序;也常會被外部的資料存取介面所使用,像是 ADOJDBCADO.NETPL-SQL 等都有資料指標的應用。

原理

資料指標是在資料庫產生結果集時,由資料庫引擎所產生的一個指標,用來指示目前正在存取的結果集的位置,經由這個指標,可以得到結果集中的資料列,並且可以依照需求來移動,但由於指標會佔用伺服器的資源,並且在指標開啟期間會啟用共用鎖定(Shared Lock),在多人使用的系統中容易造成死結的問題,因此目前大部份的應用程式都是使用僅前移型指標 (Forward-Only Cursor)。

種類

依照功能來區分,有四種[1]

靜態指標

靜態指標 (Static Cursor) 是利用暫存資料表作為儲存結果集空間的一種指標,它可以讓應用程式可以快速的存取結果集,但在靜態指標開啟期間,任何對資料表所做的變更都不會反映在結果集中;同時,在靜態指標中所作的修改,無法反映到資料庫中,此種指標是消耗資源度第三的指標。

動態指標

動態指標 (Dynamic Cursor) 是可以反映資料庫中修改的一種指標,不過它並不會讓結果集的位置固定 (隨機變動),因此無法確實的以指標位置來判斷資料,並且它因為要隨時反映資料庫的變化,因此伺服器需要消耗較多的資源,此種指標是消耗資源第二高的指標。

索引鍵集型指標

索引鍵集指標 (Keyset Cursor) 是動態指標的強化版本,藉由維護一個資料集位置對應表 (以 SQL Server 為例,會建立在 tempdb 的 keyset 資料表中),以維護在結果集中的順序不受更新而變化,但這相對的也付出了伺服器效能和資源消耗的代價,因此索引鍵集指標是最消耗伺服器資源的一種指標,在實務上應避免使用。

僅前移型指標

僅前移型指標 (Forward-Only Cursor) 是一旦將指標往前移時,其走過的指標之前的結果集就會被捨棄,因此應用程式不能再往後移動指標,但也因此讓伺服器只需要記住指標在結果集中目前的位置即可,這讓它消耗的資源只有指標而已,是最省資源的一種指標,在實務中被廣泛使用,像 ADO.NET 的 DataReader 就只限定只能使用 Forward-Only Cursor。

可捲動或不可捲動

資料庫指標又分為可捲動性 (scrollable cursor) 指標與不可捲動性指標,可捲動性指標代表資料庫指標可以依據指標的操作指令來移動,像是向前 (NEXT)、向後 (BACK)、朝指定位置移動等等性質。此種指標在執行資料庫複製 (Replication) 時,是一個相當重要的能力,但可捲動性指標又會比不可捲動性指標消耗更多的資源。

缺點

資料庫指標有三個缺點:

  • 若在網路應用程式中使用,會造成大量的網路來回(Round-trip),讓網路流量大增。
  • 若在多人應用程式中大量使用指標,會造成大量的鎖定,因此使用不當的話,讓資料庫發生死結的機率會大增。
  • 在SQL預存程序或SQL預存函數使用時,如果在巢式迴圈之中使用多個資料庫指標,將使得資料的存取效能嚴重低落。

參考資料

  1. ^ 資料指標類型. [2008-09-21]. (原始内容于2016-05-03). 

指標, 資料庫, 資料指標, data, cursor, 或稱游標, 是在資料庫引擎, database, engine, 讓開發人員或資料庫管理員可以遍歷, 瀏覽檢索結果的資料列, 稱為資料查詢結果集, result, 是主要用於在結果集中移動到某一資料列, 的控制結構, 游標可以被看作是指向一組列中, 代表某一列的指針, 游標一次只能引用一列, 但可以根據需要移動到結果集的其他列, 游標有助於隨檢索之後的資料處理與遍歷相結合, 如添加和刪除記錄, 它能遍歷資料查詢結果集的特性, 類似於編程語言的迭代器概念, 開. 資料指標 Data Cursor 或稱游標 是在資料庫引擎 Database Engine 中 讓開發人員或資料庫管理員可以遍歷 瀏覽檢索結果的資料列 稱為資料查詢結果集 Result set 是主要用於在結果集中移動到某一資料列 row 的控制結構 游標可以被看作是指向一組列中 代表某一列的指針 游標一次只能引用一列 但可以根據需要移動到結果集的其他列 游標有助於隨檢索之後的資料處理與遍歷相結合 如添加和刪除記錄 它能遍歷資料查詢結果集的特性 類似於編程語言的迭代器概念 開發程序人員通常依需求而使用游標 來處理由資料庫系統查詢返回的整個結果集 在這種情況下 游標可使結果集中的資料列依照次序處理 在SQL程序中 使用游標可以定義檢索集 多行資料列的條件選取組合 並逐行執行資料處理的邏輯 通過相同的機制 SQL程序也可將結果集直接返回給調用者或客戶端應用程序 也常會被外部的資料存取介面所使用 像是 ADO JDBC ADO NET PL SQL 等都有資料指標的應用 目录 1 原理 2 種類 2 1 靜態指標 2 2 動態指標 2 3 索引鍵集型指標 2 4 僅前移型指標 3 可捲動或不可捲動 4 缺點 5 參考資料原理 编辑資料指標是在資料庫產生結果集時 由資料庫引擎所產生的一個指標 用來指示目前正在存取的結果集的位置 經由這個指標 可以得到結果集中的資料列 並且可以依照需求來移動 但由於指標會佔用伺服器的資源 並且在指標開啟期間會啟用共用鎖定 Shared Lock 在多人使用的系統中容易造成死結的問題 因此目前大部份的應用程式都是使用僅前移型指標 Forward Only Cursor 種類 编辑依照功能來區分 有四種 1 靜態指標 编辑 靜態指標 Static Cursor 是利用暫存資料表作為儲存結果集空間的一種指標 它可以讓應用程式可以快速的存取結果集 但在靜態指標開啟期間 任何對資料表所做的變更都不會反映在結果集中 同時 在靜態指標中所作的修改 無法反映到資料庫中 此種指標是消耗資源度第三的指標 動態指標 编辑 動態指標 Dynamic Cursor 是可以反映資料庫中修改的一種指標 不過它並不會讓結果集的位置固定 隨機變動 因此無法確實的以指標位置來判斷資料 並且它因為要隨時反映資料庫的變化 因此伺服器需要消耗較多的資源 此種指標是消耗資源第二高的指標 索引鍵集型指標 编辑 索引鍵集指標 Keyset Cursor 是動態指標的強化版本 藉由維護一個資料集位置對應表 以 SQL Server 為例 會建立在 tempdb 的 keyset 資料表中 以維護在結果集中的順序不受更新而變化 但這相對的也付出了伺服器效能和資源消耗的代價 因此索引鍵集指標是最消耗伺服器資源的一種指標 在實務上應避免使用 僅前移型指標 编辑 僅前移型指標 Forward Only Cursor 是一旦將指標往前移時 其走過的指標之前的結果集就會被捨棄 因此應用程式不能再往後移動指標 但也因此讓伺服器只需要記住指標在結果集中目前的位置即可 這讓它消耗的資源只有指標而已 是最省資源的一種指標 在實務中被廣泛使用 像 ADO NET 的 DataReader 就只限定只能使用 Forward Only Cursor 可捲動或不可捲動 编辑資料庫指標又分為可捲動性 scrollable cursor 指標與不可捲動性指標 可捲動性指標代表資料庫指標可以依據指標的操作指令來移動 像是向前 NEXT 向後 BACK 朝指定位置移動等等性質 此種指標在執行資料庫複製 Replication 時 是一個相當重要的能力 但可捲動性指標又會比不可捲動性指標消耗更多的資源 缺點 编辑資料庫指標有三個缺點 若在網路應用程式中使用 會造成大量的網路來回 Round trip 讓網路流量大增 若在多人應用程式中大量使用指標 會造成大量的鎖定 因此使用不當的話 讓資料庫發生死結的機率會大增 在SQL預存程序或SQL預存函數使用時 如果在巢式迴圈之中使用多個資料庫指標 將使得資料的存取效能嚴重低落 參考資料 编辑 資料指標類型 2008 09 21 原始内容存档于2016 05 03 取自 https zh wikipedia org w index php title 指標 資料庫 amp oldid 67922775, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。