Abstract
現代的線上交易處理工作負載有兩個顯著的特徵。首先,大多數交易僅對少量的資料做操作,而且可由應用程式開發者預先定義的其執行邏輯並撰寫成資料庫中的程序。其次,存取資料的變化隨著時間的推移,可能不容易對資料做分割。第一個特徵激勵了先決式資料庫系統,相較於傳統分散式資料庫,先決式資料庫系統可避免代價高昂的二階段提交(交易同步協定),由近年的研究指出,當資料有一個(幾乎)完美的分割方式時,先決式資料庫系統可以在同質電腦組成的叢集上有相當高的單位時間產出,同時確保副本之間的強一致性。然而,現代線上交易處理工作負載的第二個特徵使得達到非常好的資料分割是不可行的,這嚴重傷害了先決式資料庫系統的吞吐量和限制了它的適用性。在本文中,我們提出了先決式資料庫系統分派交易的概念,以應對不可預見的或難以分派的工作負載。相對於尋找好的資料分割,我們採取分派交易本身,並改變交易執行的流程來滿足當前工作負載。通過模擬交易之間的依賴關係作為交易相依性圖,我們允許每台機器在以分散式的方式來決定哪些交易應該在哪台機器上執行,並且搭配交易執行決策的優化,例如哪些交易需要複製在多台機器執行或是改變相對地執行順序,以產生更好的交易分派。我們實施一個新的交易執行引擎,稱為T-Part,並討論我們在實施過程中遇到的挑戰,以及實作上的各種優化與考量。