SQLSERVER資料庫表各種同步技術

来源:http://www.cnblogs.com/klsw/archive/2016/04/15/5395894.html
-Advertisement-
Play Games

1 --SQLSERVER資料庫表各種同步技術 減少SQLServer中每次的同步數據量 2 3 --說到資料庫,我就不由地想到同步數據,如何儘可能地減少每次的同步數據量,以此來提高同步效率,降低對網路帶寬的消耗是我們使用者所關心的。對於大批量的數據同步,這一點是應引起重視的。獲取差異數據是解決這個 ...


 1 --SQLSERVER資料庫表各種同步技術 減少SQLServer中每次的同步數據量
 2 
 3 --說到資料庫,我就不由地想到同步數據,如何儘可能地減少每次的同步數據量,以此來提高同步效率,降低對網路帶寬的消耗是我們使用者所關心的。對於大批量的數據同步,這一點是應引起重視的。獲取差異數據是解決這個問題的關鍵點,即我們僅僅同步變化了的數據,至於沒有變化的,就不再同步。對於減少每次同步數據量,以下提供了6個方法:
 4 --
 5 --1、日期欄位(時間戳)
 6 --
 7 --一般情況下,在設計表的時候,添加兩個日期欄位,createdOn, ChangedOn, 分別記錄數據產生時間和變更時間。同步程式可以根據兩個欄位來獲取差異的數據。
 8 --
 9 --2、Trigger
10 --
11 --它可以實時獲取差異數據, Trigger使用較為容易,不需要改變原表的結構,可以只監視部分的欄位變更,以獲取你需要的變化數據,並對數據做二次處理。Trigger需要你對源表的維護狀況比較瞭解,否則可能產生一些意想不到的影響。
12 --
13 --3、SQLServer本身的複製服務
14 --
15 --本身支持多種數據同步方式,功能很強大,但是使用上會比較複雜,而且如果在同步過程中,需要對差異數據做二次處理,似乎無路可走。
16 --
17 --這種方法可以保證隨時獲取某個時間段內新增(變化)的數據,同時對於追蹤問題也大有裨益。但是缺陷也不少,其一是這兩個欄位完全由開發人員控制,切實保證這兩個欄位每次都得到正確的維護比較困難,其二是不容易確定你下一次取差異數據的基準時間。
18 --
19 --4、timestamp欄位
20 --
21 --timestamp可以理解為行的版本號,每次插入或更新包含 timestamp 列的行時,timestamp 列中的值均會更新。利用這一特性,建立一個包含源表ID和timestamp值的基準表,就可以找到哪些數據發生變化了,每次同步成功後,再更新該基準表。
22 --
23 --5、監控並記錄基於某數據對象的所有DML語句
24 --
25 --這種方法,我沒有具體嘗試過,但是一個很不錯的思路,如果網路狀況糟糕,而且對數據實時性要求不高,可以採用。具體做法是每天定時獲取你需要同步表的所有update, delete語句,然後定點打包發送到另外一臺伺服器執行。
26 --
27 --6、使用BINARY_CHECKSUM
28 --
29 --這個是我認為最簡單的方法。BINARY_CHECKSUM是SQLServer內置的一個聚合函數,它可以針對一行,或者某些列計算出一個值,如果它計算的那些列中的任何一個值發生變化,那麼那個計算值就會發生變化。這樣我只要建立一個包含源表ID和最初計算值的基準表,就可以找到哪些數據發生變化了,每次同步成功後,再更新該基準表。與方法4不同的是,BINARY_CHECKSUM可以只監視部分變化的欄位,這一點又類似於Trigger了。
30 --
31 --使用BINARY_CHECKSUM有些限制,因為它在計算中會忽略具有不可比數據類型的列(不可比數據類型是 text、ntext、image、cursor 以及基本類型為前4個數據類型之一的 sql_variant),所以如果要監控這些列變化,這種方法是不起作用的。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 fio是測試IOPS的非常好的工具,用來對硬體進行壓力測試和驗證,支持13種不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。 測試準備 工具: ...
  • 那些年追過的FreeBSD分支,有debian系的kFreeBSD,arch系的archBSD現在叫pacBSD,gentoo系的gentooBSD;但基本上在虛擬機環境很難成功安裝,所以連持續嘗試的機會不多。 這段時間,又跑出來了ubuntuBSD,基本上還是基於kfreebsd的成果和思路,今天 ...
  • 用戶分類 按位置分:本地賬戶、遠程賬戶 按功能分:普通用戶、超級用戶(root) 普通用戶: (1)系統用戶:UID 1-499 (2)本地用戶:UID 500+ 每一個用戶,都有一個同名的用戶組。 用戶、組配置文件: 用戶 用戶組 (1)賬號信息 /etc/passwd /etc/group (2 ...
  • ls 作用:查看目錄下的文件 格式:直接ls查看當前所在目錄,或者 ls 參數 /目錄名 參數: -l 查看詳細信息 -a 顯示隱藏文件 . 表示當前目錄 .. 上級目錄 -G 用不同顏色標記不同類型文件(mac OS下常用,ubuntu預設ls = ls -G) pwd 作用:查看路徑 格式:直接 ...
  • 系統是lamp環境(centos6.7+apache2.2+mysql5.7+php5.3),預設 軟體下載到/usr/local/src目錄下 redis安裝在/app/local/redis目錄下 #wget http://download.redis.io/releases/redis-2.8 ...
  • 點陣圖(Bitmap)當然是最簡單的,它Windows顯示圖片的基本格式,其文件擴展名為*.BMP。在Windows下,任何各式的圖片文件(包括視頻播放)都要轉化為點陣圖個時候才能顯示出來,各種格式的圖片文件也都是在點陣圖格式的基礎上採用不同的壓縮演算法生成的(Flash中使用了適量圖,是按相同顏色區域存儲... ...
  • CentOS7 1、安裝系統 基礎設施伺服器:Java平臺、Linux遠程管理、開發工具 2、打開網路連接: (1)cd /etc/sysconfig/network-scripts/ #進入網路配置文件目錄 (2)vi ifcfg-eno16777736 #編輯配置文件,修改以下內容 (3)將on ...
  • 1. SQlite介紹 SQLite是一款開源,輕量級,嵌入式關係型資料庫。是一個學習關係型資料庫的很好的工具。SQLite除了作為一個存儲容器外,還可以作為一個單純的數據處理的工具。使用SQLite 可以很容易地將應用程式所使用的數據結構轉化為表,並保存在一個內在資料庫中。通過sql語句操作資料庫 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...