DBA和數(shù)據(jù)工程師應(yīng)當(dāng)持續(xù)關(guān)注并測試 , 那些被添加到生產(chǎn)環(huán)境中的各種觸發(fā)器的性能 , 進(jìn)而決定是否可以容忍此類額外產(chǎn)生的開銷 。
事務(wù)日志CDC

文章插圖
眾所周知 , 數(shù)據(jù)庫雖然主要會(huì)將事務(wù)日志用于備份和恢復(fù)目的 , 但它們也可被用于將變更復(fù)制到目標(biāo)數(shù)據(jù)庫或數(shù)據(jù)湖中 。而在基于事務(wù)日志的CDC系統(tǒng)中 , 數(shù)據(jù)流不會(huì)被持久性存儲(chǔ) 。它們會(huì)使用Kafka去捕獲變更 , 并將變更推送到目標(biāo)數(shù)據(jù)庫中 。
可見 , 基于事務(wù)日志的CDC和基于觸發(fā)器的CDC之間的主要區(qū)別在于 , 每個(gè)變更都將進(jìn)入由數(shù)據(jù)庫引擎所生成的事務(wù)日志中 。也就是說 , 數(shù)據(jù)庫引擎會(huì)使用本機(jī)事務(wù)日志(也稱為重做日志) , 來存儲(chǔ)所有數(shù)據(jù)庫的事件 , 以便在發(fā)生故障時(shí) , 可以恢復(fù)數(shù)據(jù)庫 。它們無需執(zhí)行任何應(yīng)用程序級別的變更 , 或掃描影子表 。因此 , 與基于觸發(fā)器的CDC相比 , 從事務(wù)日志中恢復(fù)數(shù)據(jù)雖然更為復(fù)雜 , 但是會(huì)更加可行 。
優(yōu)點(diǎn):
- 由于每個(gè)事務(wù)都不需要額外的查詢 , 因此它對生產(chǎn)環(huán)境中的數(shù)據(jù)庫系統(tǒng)的影響最小 。
- 無需變更生產(chǎn)環(huán)境中數(shù)據(jù)庫系統(tǒng)的架構(gòu) , 或添加額外的數(shù)據(jù)表 。
- 由于大多數(shù)數(shù)據(jù)庫并不記錄它們的事務(wù)日志格式 , 也不會(huì)在新的版本中公布對其實(shí)施的變更 , 因此DBA解析數(shù)據(jù)庫的內(nèi)部日志格式會(huì)較為困難 。DBA有時(shí)需要在數(shù)據(jù)庫的每個(gè)新版本中 , 去解析變更數(shù)據(jù)庫的日志邏輯 。
- 由于日志文件通常會(huì)被數(shù)據(jù)庫引擎予以歸檔 , 因此CDC軟件必須在此之前讀取日志 , 或者能夠讀取已歸檔的日志 。
- 創(chuàng)建可掃描的事務(wù)日志所需要的額外日志級別 , 可能會(huì)增加少量的性能開銷 。
- 當(dāng)CDC應(yīng)用程序發(fā)送數(shù)據(jù)時(shí) , 目標(biāo)數(shù)據(jù)庫可能會(huì)意外地變得不可訪問 。它們必須緩沖未發(fā)送的數(shù)據(jù) , 直到目標(biāo)數(shù)據(jù)庫重新聯(lián)機(jī)上線 。當(dāng)然 , 如果未能完成該步驟 , 則可能導(dǎo)致數(shù)據(jù)的丟失或重復(fù) 。
- 同樣 , 如果源與目標(biāo)之間的傳輸連接出現(xiàn)中斷 , 系統(tǒng)也可能會(huì)發(fā)生故障 , 進(jìn)而導(dǎo)致數(shù)據(jù)的丟失、記錄的重復(fù)、以及需要從初始數(shù)據(jù)處重新啟動(dòng)加載 。
觸發(fā)器可作為每個(gè)數(shù)據(jù)庫事務(wù)的一部分 , 以捕獲實(shí)時(shí)發(fā)生的事件 。對于每次插入、更新或刪除 , 都會(huì)由某個(gè)觸發(fā)器去觸發(fā)記錄的變更 。另一方面 , 事務(wù)日志CDC則可以獨(dú)立于事務(wù)運(yùn)行 。它使用重做日志文件來記錄的變更 。由于CDC操作在發(fā)生時(shí)不會(huì)直接與數(shù)據(jù)庫中的每個(gè)事務(wù)相關(guān)聯(lián) , 因此其性能會(huì)有所提升 。
在實(shí)際應(yīng)用中 , 各種常見的DBSync產(chǎn)品和DBConvert Studio都會(huì)使用基于觸發(fā)器的數(shù)據(jù)庫同步CDC方法 。不過 , 對于集群數(shù)據(jù)庫而言 , 基于觸發(fā)器的方法可能會(huì)比使用MySQL的二進(jìn)制日志、或PostgreSQL的事務(wù)日志 , 要相差許多 。畢竟 , MySQL在其官網(wǎng)上已聲稱:“在啟用二進(jìn)制日志的情況下 , 服務(wù)器的運(yùn)行性能可能會(huì)被略微拖慢 。但是 , 二進(jìn)制日志在方便復(fù)制與恢復(fù)操作等方面的好處 , 通常超過性能上的微降 。”(
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 電腦打印照片怎么打印兩寸 如何打印2寸照片
- 電腦定時(shí)關(guān)機(jī)如何解除 如何讓電腦定時(shí)關(guān)機(jī)
- 爆料快速漲粉的3大秘訣 新手如何運(yùn)營抖音好漲粉
- 怎么制作微信小程序 如何制作微信小程序
- 手機(jī)怎么下載兩個(gè)微信 手機(jī)如何下載兩個(gè)微信
- 微信怎么發(fā)高清視頻 微信如何發(fā)高清視頻
- 手機(jī)丟失如何追蹤位置 手機(jī)丟了如何找回
- 高血壓最怕的三種水果 如何預(yù)防高血壓
- 不刪除數(shù)據(jù)合并分區(qū) 硬盤如何合并分區(qū)
- 大學(xué)為什么禁止共享單車 共享單車如何使用
