sqlserver資料庫中如何保持資料一致性

時間 2022-02-04 02:20:03

1樓:芒儂

根據實現策略的不同,主要有快照複製、事務複製、合併複製等三種型別。這三種複製型別,各有各的特點,分別適用於不同的場合。一般來說,在考慮採用哪種複製型別比較合適的時候,主要考慮的是效能與資料同步的時間間複製是sqlserver資料庫中保持資料一致性的一種手段。

根據實現策略的不同,主要有快照複製、事務複製、合併複製等三種型別。這三種複製型別,各有各的特點,分別適用於不同的場合。一般來說,在考慮採用哪種複製型別比較合適的時候,主要考慮的是效能與資料同步的時間間隔。

那麼在什麼情形下比較適用快照複製呢?筆者就跟大家來討論一下這個話題。 為了在恰當的時候採用快照複製,資料庫管理員首先需要知道快照複製的特點。

快照複製是指將資料以特定時刻的瞬時狀態**,而不堅實對資料的更新。在發生同步時,將生成完整的快照並將其傳送到訂閱伺服器。簡單的說,快照複製就是每隔一段時間發生資料同步操作。

而不是釋出伺服器的資料一有更新就出發這個快照複製。顯然這種快照複製的資料同步性稍微差一點。在訂閱伺服器與釋出伺服器之間有一段時間會存在資料不一致的情況。

但是這可以在很大程度上提高訂閱伺服器與釋出伺服器的效能。這就好像汽車運輸。採用快照複製的話可以將一個集裝箱裝滿後在送貨,而不是有多少送多少。

掌握這個資料庫復快照複製的具體特點之後,資料庫管理員就可以來考慮在什麼情況下,採用快照複製更加的合理。 一、資料更改比較少的系統中。 快照複製與其他複製相比最主要的缺陷就是資料庫中的資料無法及時同釋出伺服器一致。

為此如果釋出伺服器中的內容很少更改的話,顯然此時採用快照複製是比較合理的。此時採用快照複製的話,不僅資料一致性延遲的負面效應會越來越不明顯,同時可以提高發布伺服器與訂閱伺服器的效能。如在實際工作中,經常會遇到這樣的客戶。

如一家企業在各地都有辦事處或者銷售機構,就像肯德基一樣,各地的產品**基本上都是相同的,不怎麼會更改。即使更改的話,各地也是統一調整。由於此時產品**表更改的比較少,那麼在企業總部的資料庫服務與各地的訂閱伺服器之間,採用快照複製的形式就會比較合適。

其實類似的情況有很多。如不少的服裝企業,像李寧、耐克等等,他們不僅自己生產,而且在各地又有自己的銷售辦事處。在**方面也是統一的。

在這種情況下,採用快照複製往往能夠提高資料庫複製的效能,同時又不影響其使用。 二、在某個時段內會出現資料大量的更改。 需要補充說明的一點是,上面說到的資料不怎麼發生更改,指的是資料的延續性更改。

如在一年中,每天或者每個小時更改的資料都比較平均。此時採用快照複製不怎麼合適。但是如果資料的更改集中在一個時段內。

而其他時間中資料庫的內容不會有多大的更改。此時採用快照複製是可行的。如一些決策性系統,往往在起初匯入資料的時候,需要進行大量的更改。

而等到資料匯入完畢,在大家對資料進行分析時,則資料庫中的內容基本上保持不變。在這種情況下,筆者認為只要資料的更新集中在一個固定的時段,此時採用快照複製仍然是可行的。 再如上面這個kfc或者服裝企業的案例中,如果市場部門維護一個產品的**,而且這些**往往在一個固定的時間進行幾次更新。

如在換季的時候會進行一些**。此時資料庫管理員可以在資料更新完畢後立即執行復制完成的資料快照。所以,以資料更新來判斷是否適合採用快照複製,標準並不是資料的更新量。

像上面提到的分析決策系統,其起初的資料更新量可能比有些資料庫系統幾年的資料更新量都要大。筆者認為,主要是根據資料更新的頻率來進行判斷。如果資料更新的比較頻繁,那麼即使資料更新的資料不多,像那種細水長流似的更新,則不適合採用快照複製。

而那些井噴似的資料更新,所有的更新都集中在一個固定的時刻,那麼此時採用快照複製是比較合理的。 三、在一段時間內是否允許具有相對釋出伺服器已過時的資料副本? 現在不少超市也已經連鎖了,如世紀聯華等等。

為了提高利潤,增加市場的份額,這些超市紛紛推出了衝值卡,即消費者先將一定金額的人民幣打入到衝值卡中。然後每次消費完成後從卡中扣費。但前些天經常有新聞報道,說一個客戶的消費卡在一家聯華超市掛失了。

但是撿到這張卡的人仍然可以在其他的聯華超市中消費。為此消費者就想不明白了,為什麼掛失了的消費卡仍然可以在其他超市中消費?掛失後的損失該由誰來承擔呢?

其實這就使超市在不適當的時候採用了快照複製所造成的。由於採用快照複製,在各個聯華超市的資料庫之間資料無法在短時間內取得一致。如有些商戶說掛失當日之內的損失他們不承擔,這就說明他們可能是每天下班後進行一次快照複製。

一般情況下這不會有問題。但是像遇到消費卡被偷了等情況,就會遇到類似的問題了。 所以,在考慮是否適合採用快照複製的時候,還需要考慮在一段時間內是否允許具有相對釋出伺服器來說已過時的資料副本。

如果不允許的話,那麼就不允許採用這個快照複製。如果允許的話,那麼資料庫管理員就需要評估這段時間最長是多少。如果是24個小時,那麼就需要每隔24小時進行一次快照複製。

但是需要注意的是,如果時間的間隔比較短,如才允許十分鐘的資料延遲,那麼採用快照複製就沒有必要了。此時採用事務複製或則和合並複製可能更加的合適。 四、複製少量的資料。

快照複製跟其他複製型別相比,還有一個比較顯著的特點,即當發生資料同步時,將生成完整的快照並將其從釋出伺服器傳送到訂閱伺服器。這是一個什麼概念呢?如訂閱伺服器中有10g的資料,而在一個快照複製的週期內,只有1m的資料發生了更改。

此時發生快照複製的話,資料庫系統會將10g的資料都傳送到訂閱伺服器上。此時更改的資料只有1m,卻需要在網路上傳送10g的資料流量,顯然會對企業的網路產生比較大的壓力。由於在釋出伺服器上快照複製的連續開銷低於事務複製的開銷,一次資料庫系統不會啟用跟蹤增量更改。

但是像這種情況,如果要複製的資料量非常的大,而平時的更新又不多。此時資料庫系統要生成和應用快照,就將耗用大量的資源,包括網路資源和伺服器資源。所以說,當釋出伺服器中的資料比較多時,採用快照複製不怎麼合適。

因為此時網路傳輸反而會成為其最重大的瓶頸資源。相反若能夠採取細水長流的事務複製策略,那麼對於企業網路效能的影響就會小的多,甚至可以忽略不計。 所以在採用快照複製的時候,資料庫管理員一定要明白,快照複製會傳送整個資料庫物件。

從而在快照複製傳輸過程中會侵蝕大量的網路頻寬,從而明顯的降低企業網路的效能,甚至導致網路擁塞。有時候為了保障快照能夠準確、迅速的傳遞到其他的訂閱伺服器,還不得不採用vpn等技術來保障傳輸的準確性。為此,筆者認為只有釋出伺服器的資料庫並不是很大的情況下,才適合採用快照複製。

否則的話,採用快照複製是得不償失。 從以上的分析中,可以得到一個結論。在考慮採用快照複製是否合適時,往往不能夠採用一個指標來判斷。

而需要考慮多個因素,如資料庫的大小、資料更新的頻率、允許資料延遲的時間等等因素來進行判斷。最後在資料的一致性與資料庫的效能之間取得一個均衡。說實話,對於大部分資料庫管理員來說,要做出一個抉擇,確實有困難。

因為這沒有固定的指標可以拿來參考。如資料庫容量小於多少時該採用快照複製。任何一個資料庫管理專家都不能夠下這個結論。

所以在掌握影響其選擇的相關因素外,就要依靠資料庫管理員的經驗了。在遇到類似的選擇題時,往往經驗可以幫助管理員迅速解決問題。最後需要提醒的是,無論最終採取了什麼方案,最好能夠持續跟蹤一段時間,看看自己的選擇是否合理。

2樓:匿名使用者

表建立主鍵

主從表建立關聯關係

建立約束避免不正確的資料。

在資料庫中怎樣同時保持資料的完整性和歷史資料的完整性。 20

3樓:匿名使用者

資料庫的安全性、完整性、併發控制和恢復

4樓:匿名使用者

你可以試著做個刪除標誌,而沒有真正刪除。這樣相對來說會好點

如何連線sqlserver資料庫

以sqlserver2008r2為例。1 開啟sql2008,使用windows身份登入 2 登入後,右鍵選擇 屬性 左側選擇 安全性 選中右側的 sql server 和 windows 身份驗證模式 以啟用混合登入模式 3 選擇 連線 勾選 允許遠端連線此伺服器 然後點 確定 4 安全性 登入名...

如何刪除sqlserver資料庫

drop database database name 如何徹底刪除sqlserver 資料庫 sql server正常情況下可以通過新增刪除將其解除安裝,但有時可能會出現一些不可遇見的原因,導致其不能自動解除安裝,就需要手工解除安裝,在手工解除安裝前要注意做好資料的備份工作,以便於 以後做還原,解...

如何讓 sql server 2019資料庫中的資料備份到另

流行詞毛毛 需要用備份軟體,中科同向,備份可以用主伺服器和備份伺服器,這樣就可以備份到另外一臺伺服器了 其實 我懂得 一般的方法也可以,簡單 省事的辦法也有,就是安裝一個資料備份的軟體,不過可能會產生費用,看你的資料是否值得你去都買備份軟體了,中科同向有備份軟體,在裡面可以制定備份策略,相對於一般的...