資料庫映象和資料庫快照

iSQlServer發表於2008-11-13

可以利用為了實現可用性目標而維護的映象資料庫來減輕報表的負載。若要將映象資料庫用於報表,可以在映象資料庫中建立資料庫快照,並將客戶端連線請求定向到最新的快照。由於資料庫快照只在建立快照時存在,因此,它是一個靜態的、只讀的並與其源資料庫保持事務一致的快照。若要在映象資料庫中建立資料庫快照,資料庫必須處於同步映象狀態。

與映象資料庫本身不同,客戶端可以訪問資料庫快照。只要映象伺服器與主體伺服器進行通訊,就可以將報表客戶端連線定向到快照。注意,由於資料庫快照是靜態的,因此沒有新資料可用。為了讓使用者能夠使用相對較新的資料,必須定期建立新的資料庫快照,並通過應用程式將傳入客戶端連線定向到最新的快照。

新的資料庫快照幾乎是空的,但是它會隨著越來越多的資料頁的首次更新而增長。由於資料庫中的每個快照都以這種方式增長,因此,每個資料庫快照與常規資料庫使用同樣多的資源。根據映象伺服器和主體伺服器的配置,在映象資料庫中保留過多的資料庫快照可能會降低主體資料庫的效能。因此,我們建議在映象資料庫中僅保留少量相對較新的快照。一般情況下,在建立替換快照之後,應重新將傳入查詢定向到新的快照,並在完成所有當前的查詢之後刪除較早的快照。

注意:
有關資料庫快照的詳細資訊,請參閱資料庫快照。
 


如果出現角色切換,則資料庫及其快照將重新啟動並暫時斷開與使用者的連線。然後,資料庫快照保留在建立時所在的伺服器例項中,併成為新的主體資料庫。使用者可以在故障轉移後繼續使用快照。但是,這樣會給新的主體伺服器帶來額外的負荷。如果在您的環境中效能是一個關注點,則我們建議您應在新映象資料庫成為可用後,在其中建立快照,並將客戶端重新定向到新快照,同時從以前的映象資料庫中刪除所有資料庫快照。

注意:
對於能很好地向外擴充套件的專用報告解決方案,可以考慮複製。有關詳細資訊,請參閱資料倉儲和報告。
 


 示例
下面的示例將對映象資料庫建立快照。

假定資料庫映象會話的資料庫為 AdventureWorks。此示例在 AdventureWorks 資料庫(位於驅動器 F 中)的映象副本中建立了三個資料庫快照。分別將這些快照命名為 AdventureWorks_0600、AdventureWorks_1200 和 AdventureWorks_1800,以標識它們的近似建立次數。

在 AdventureWorks 的映象中建立第一個資料庫快照。

 複製程式碼
CREATE DATABASE AdventureWorks_0600
ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP')
   AS SNAPSHOT OF AdventureWorks

在 AdventureWorks 的映象中建立第二個資料庫快照。仍在使用 AdventureWorks_0600 的使用者可以繼續使用它。

 複製程式碼
CREATE DATABASE AdventureWorks_1200
ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')
   AS SNAPSHOT OF AdventureWorks

此時,可以用程式設計的方式將新客戶端連線定向至最新的快照。

在 AdventureWorks 的映象中建立第三個快照。仍在使用 AdventureWorks_0600 或 AdventureWorks_1200 的使用者可以繼續使用它們。

 複製程式碼
CREATE DATABASE AdventureWorks_1800
ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')
    AS SNAPSHOT OF AdventureWorks

此時,可以用程式設計的方式將新客戶端連線定向至最新的快照。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-494026/,如需轉載,請註明出處,否則將追究法律責任。

相關文章