資料庫映象和跨資料庫事務
跨資料庫事務和分散式事務均不支援資料庫映象。這是因為以下原因無法保證事務的原子性/完整性:
- 對於跨資料庫事務:故障轉移後,映象資料庫位於其他伺服器例項中,並且通常會位於獨立於非映象資料庫的資料庫中。即使是在相同的兩個夥伴之間映象兩個資料庫,仍不能保證這兩個資料庫會同時進行故障轉移。
- 對於分散式事務:故障轉移後,新主體伺服器無法連線到前一個使用相同資源 ID 的主體伺服器的分散式事務處理協調器。因此,新主體伺服器無法獲取事務狀態。
以下示例說明了如何出現邏輯上的不一致。在此示例中,應用程式使用跨資料庫事務插入兩行資料:將其中一行插入映象資料庫 A 中的表,將另一行插入另一個資料庫 B 中的表。資料庫 A 在具有自動故障轉移功能的高安全性模式下進行映象。提交事務時,資料庫 A 不可用,映象會話將故障自動轉移到資料庫 A 的映象資料庫。
故障轉移之後,跨資料庫事務可能會在資料庫 B 上成功提交,但不可能會在故障轉移的資料庫中成功提交。如果在發生故障之前,資料庫 A 的原始主體伺服器未能將跨資料庫事務的日誌傳送到映象伺服器,則可能會出現這種情況。故障轉移之後,該事務將不存在於新的主體伺服器上。資料庫 A 和資料庫 B 出現不一致,因為在資料庫 B 中插入的資料保持完好無損,而在資料庫 A 中插入的資料已經丟失。
使用 MS DTC 事務時可能會出現類似的情況。例如,故障轉移後,新主體將訪問 MS DTC。但是 MS DTC 不能識別新的主體伺服器,因而會終止被認為已在其他資料庫中提交了的、所有“準備提交”的事務。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-494024/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MCMySQL 資料庫 索引和事務ktkMySql資料庫索引
- 說說資料庫事務資料庫
- 淺談資料庫事務資料庫
- 資料庫事務概論資料庫
- 資料庫事務的特徵資料庫特徵
- 資料庫事務與 MySQL 事務總結資料庫MySql
- 資料庫主要物件及事務資料庫物件
- 資料庫事務入門指南資料庫
- Laravel 開啟資料庫事務Laravel資料庫
- MySQL資料庫本地事務原理MySql資料庫
- 資料庫映象 (SQL Server)資料庫SQLServer
- 資料庫事務以及事務的四個特性資料庫
- 資料庫事務和MVCC多版本併發控制資料庫MVC
- 【MySQL】資料庫事務深入分析MySql資料庫
- [專業術語]資料庫事務資料庫
- 用【庫存】看懂雲開發資料庫事務資料庫
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- 資料庫事務與事務的隔離級別資料庫
- 資料庫事務 ACID屬性、資料庫併發問題和四種隔離級別資料庫
- MySQL資料庫6:Go與MySQL事務MySql資料庫Go
- 資料庫事務與隔離級別資料庫
- 資料庫事務的方方面面資料庫
- 資料庫事務的四大特性資料庫
- MySQL(一):MySQL資料庫事務與鎖MySql資料庫
- 【從零開始學習Oracle資料庫】(4)建立表與增刪改和資料庫事務Oracle資料庫
- KES資料庫實踐指南:探索KES資料庫的事務隔離級別資料庫
- 2.8.1.2 資料庫服務和效能資料庫
- 通過SQL Server資料庫映象保護虛擬資料庫ICSQLServer資料庫
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- 關於資料庫事務併發的理解和處理資料庫
- 關於資料庫事務和鎖的一些分析資料庫
- 資料庫映象 (SQL Server)操作模式資料庫SQLServer模式
- MySQL 資料庫設計和注意事項MySql資料庫
- 資料庫分散式事務的實現原理!資料庫分散式
- 聊聊資料庫的事務隔離級別資料庫
- 暑期自學 Day 14 | 資料庫 (七)- 事務資料庫
- Mysql資料庫之多表查詢、事務、DCLMySql資料庫
- 資料庫索引、事務及儲存引擎 (續資料庫索引儲存引擎
- 為什麼我們需要資料庫事務資料庫