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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...