- 分布式數據庫原理、架構與實踐
- 李海翔
- 639字
- 2021-10-20 15:26:08
3.1 依賴物理時間引發的問題
事務的并發訪問控制算法——TO算法(基于時間戳排序的并發訪問控制算法),依賴時間戳值對事務的提交順序進行排序。對于傳統的單機數據庫系統,時間戳值可依據本機器的物理時鐘獲取(計算機中的系統時鐘是一個頻率精確和穩定的脈沖信號發生器[1])。而對于主流的數據庫系統,時間戳值常通過一個相對的邏輯時鐘(邏輯計數器)來給每一個事務排序。所以,依賴TO算法對事務并發控制進行處理,客觀上是依賴一個具備單調性的時鐘值,其形式上可能是物理時鐘或邏輯時鐘。
在分布式系統中,各個節點分布在不同物理位置,而且都存在自己的物理時鐘,不同節點上的時間戳值不完全相同。所以物理時鐘不能作為分布式系統內在不同節點上并發執行的事務的排序依據。這個問題可以通過一個抽象問題進行描述:如何在分布式環境下定義系統中所有事件的發生順序?這就會涉及1.1.1節討論的不可信物理時鐘、日志等問題,大家可查看1.1.1節的相關內容,這里不再重復。
那么,那有沒有辦法在不使用物理時鐘的情況下,給分布式環境下的所有事件排序呢?下面將從幾個典型算法的角度,來探討分布式系統中事件排序相關的解法。
[1]在計算機中由專門的時鐘電路提供時鐘信號,這種時鐘電路就是石英晶體振蕩器(Quartz Crystal OSC),簡稱晶振,其會產生頻率信號,并按照頻率均勻地打拍計數,以模擬時間的等間隔流逝,于是有了人們可感受到的“時間”。如主板上有一顆14.318MHz的晶振,作為基礎頻率源;還有一顆頻率為32.768KHz的晶振,被用于在實時時鐘(RTC)電路中顯示精確的時間和日期。更多內容參考:https://baike.baidu.com/item/時鐘頻率/103708。
推薦閱讀
- CouchDB and PHP Web Development Beginner’s Guide
- Linux命令行與shell腳本編程大全(第4版)
- 零基礎入門學習Python
- jQuery開發基礎教程
- MATLAB 2020從入門到精通
- Selenium Testing Tools Cookbook(Second Edition)
- Python3.5從零開始學
- 軟件項目管理實用教程
- C# Multithreaded and Parallel Programming
- Raspberry Pi Robotic Projects(Third Edition)
- Visual FoxPro 6.0程序設計
- Serverless Web Applications with React and Firebase
- C編程技巧:117個問題解決方案示例
- 一步一步跟我學Scratch3.0案例
- Visual Basic程序設計基礎