任何人都可以幫助我看到什麼樣的情況下,有一個共享數據庫事務和多個連接是有意義的嗎? 謝謝。每個多個數據庫連接都有一個事務是何時有意義的?
回答
就我個人而言,我不覺得它在RDBMS中是明智的 - 但是我可以看到它減少了非常高負載數據庫的設計複雜性。
例如在電子商務案例中,您可能會對其進行分區,以便產品庫存位於一個數據庫中,而訂單位於另一個數據庫中。在這種情況下,在處理訂單時,您不會減少庫存數量並增加一個錯誤計數 - 在這種情況下,全局交易將有意義。
但99%有一個更好的選擇,可以在設計中解決。
- 編輯:全局事務的陷阱 -
這2點是爲什麼我不使用全局事務
1點建議:
全球交易涉及多個數據庫服務器(或至少他們應該) - 全球交易需要一個DTC(分佈式交易協調員) - 採用這樣一個代理將通過ORDERS的因素降低查詢的速度,因爲事情並沒有在一個範圍內完成單機,但涉及多這意味着網絡。
點2:
如果查詢不適合設計(大多數人不明白的細微之處),你可能最終對個人數據庫鎖定表的大部分,有時人甚至最終鎖定整個帶有單個查詢的表格。如果事情沒有正確地設計用於分佈式查詢,你的應用程序將停滯不前,並且有人會被解僱:D。您需要確保您的查詢僅鎖定他們必須的鎖定,並且您必須嘗試確保這些鎖定的數據部分僅由一個查詢同時使用。
爲什麼在分佈式查詢中鎖定表更糟?因爲第1點。你現在鎖定最後的訂單,因爲訂單的因素更長。
- 編輯:潛在的區域,您可能需要調查 -
羣集技術和HPC經常使用的Distributed Lock Managers。通過研究這些技術的數據管理變體,您將學到很多東西,因爲它們會告訴你這些實現認爲是否有必要獲得全局鎖定(這是全局事務的作用)。
如果你的意思是多個數據庫都被一個事務中更新,那麼你會爲原子性做到這一點 - http://en.wikipedia.org/wiki/Atomicity_(database_systems)
打趣考慮銀行轉賬,具有不同的數據庫中的每個賬戶提供商 - 錢必須離開一個帳戶並更新到另一個。如果它部分失敗 - 例如第二次數據庫更新失敗,那麼錢已經離開了一個賬戶,但沒有到達另一個賬戶,這是不可接受的。
事務意味着更新失敗意味着它們全部被取消(回滾),使數據保持在事務開始之前的狀態。
當您想要影響多個數據庫的事務操作時。
- 1. 每個事務的單個連接與所有事務的單個連接?
- 2. 每個連接有多個事務的MySQLdb
- 3. LARAVEL - 每個用戶擁有多個數據庫,用戶每次都選擇數據庫連接
- 4. 每個數據庫連接一個DAO?
- 5. 每個線程有一個數據庫連接?
- 6. 單個連接上的多個數據庫事務
- 7. WCF數據庫連接:只有一個數據庫連接
- 8. 事務範圍中有多個連接?
- 9. 連接有一個遠程數據庫
- 10. 每個查詢都有一個新的sql連接?
- 11. ActiveMQ - 每個會話有多個連接?
- 12. 多個數據庫事務
- 13. 在Redux中,每個容器都有一個連接?
- 14. 使多個SQLite數據庫提高性能是否有意義?
- 15. 多個數據庫連接
- 16. 多個數據庫連接
- 17. 多個數據庫連接
- 18. 每個數據庫實例有一個或多個用戶?
- 19. 管理跨多個事務的SQL數據庫連接
- 20. 跨不同數據庫連接的多個SQL事務命令
- 21. 一個WCF服務和多個數據庫連接
- 22. 有多個連接的多個計數
- 23. Postgres中每個事務可能有多個連接嗎? Golang的用法
- 24. SQL連接來自多個數據庫連接的多個表
- 25. 兩個並行的TransactionScope每個都有它自己的連接
- 26. 每個數據庫的groovy sql連接
- 27. 是否有意義擁有多個NSPersistentStoreCoordinators?
- 28. 是否有一個快速完美的數據庫連接池?
- 29. 數據庫中的每個表是否應該有一個SQLiteOpenHelper?
- 30. 意義 - 數據庫連接