



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、金融分布式數據庫架構實踐技術創新 變革未來分布式數據庫初始架構SpannerVSProxyRaftPaxosMapReduceTrueTimeNewSQLCAPMPPSQLDatabaseOLTPNoSQLOLAPACIDMVCC2PCMGRBASEDistributed Index External Consistency分布式事務核心思路使用后端數據庫存儲XA日志使用最后參與者策略設計思路后參與者使用階段提交負責日志記錄主要區別:參最后者退化為一階提交,并,并負責XA日志記錄。主要優勢不需要使用單獨會話進行xa日志記錄 (友商方案中向xa日志表的寫入是自動提交的另一個會話)減少一個兩階段事
2、務主要缺點涉及分布式事務的后端用戶,都需要配置xa日志表權限,因而存在運 維風險。友商方案銀聯方案ClientSet_1Set_2Datanode_1Datanode_2begin;insert into t1 values(1);xa start xa-gtid-1;xa start xa-gtid-1;insert into t1 values(1);insert into t1 values(1);insert into t1 values(2);xa start xa-gtid- 1;xa start xa-gtid- 1;insert into t1 values(1);insert
3、 into t1 values(1);commit;xa end xa-gtid-1;xa end xa-gtid-1;insert into mit_log.;xa end xa-gtid-1;xa prepare xa-gtid-1;xa prepare xa-gtid-1;xa end xa-gtid-1;xa prepare xa-gtid-1;最一insert into mit_log.;xa commit xa-gtid-1 one phase;與xa commit xa-gtid-1; 段xa commit xa-gtid- 1;xa commit xa-gtid- 1;分布式事
4、務 方案對比分布式事務 分布式死鎖分布式死鎖:場景(互斥、請求與保持、不剝奪、循環等待):a & b 開啟分布式事務time 1: atime 2: btime 3: atime 4: bwrite db1.resource1write db2.resource2write db2.resource2 - 鎖:a 等待b的 db2.resource2 write db1.resource1 - 鎖:b 等待a的 db1.resource1db1和db2上的本地寫鎖,在分布式事務場景下,出現了循環等待,成為了分布式死鎖(與傳統數據庫一樣)死鎖的解決路徑:死鎖檢測:剝奪死鎖預防:避免循環等待分布式
5、事務 死鎖檢測沖突圖(Conflict Graph)死鎖檢測的核心是獲取鎖信息,但MySQL沒有提供XAID與鎖的關聯信息。解決方案:擴展innodb_trx表,增加XAID信息,與innodb_locks關聯即可進行分布式死鎖檢測分布式事務 死鎖預防分布式死鎖預防策略:時間戳(Timestamp ordering, TO)保證單一時序的鎖等待(只接受新等舊,或舊等新)實現方案如下:帶有時間戳的XAID生成規則:事務開始時間 + TM(proxy)事務序號 + TM編號 + datanode + .修改MySQL死鎖檢測策略,增加分布式死鎖預防策略在DeadlockChecker:search
6、() 中獲取xaid,根據死鎖預防策略進行處理分布式事務 進一步優化退,者當前方案多一改進方案ClientDatanode_1Datanode_2Datanode_1Datanode_2begin;insert into t1 values(1);xa start xa-gtid-1;xa start xa-gtid-1;insert into t1 values(1);insert into t1 values(1);insert into t1 values(2);xa start xa-gtid-1;xa start xa-gtid-1;insert into t1 values(1);
7、insert into t1 values(1);commit;insert into mit_log.;xa end xa-gtid-1;insert into mit_log.;xa prepare xa-gtid- 1;xa end xa-gtid-1;xa prepare xa-gtid- 1;xa commit xa-gtid-1 one phase;xa commit xa-gtid-1 one phase;最后參與化為一階段提交但仍然有次xa end操作,將該步驟xa commit xa-gtid- 1;xa commit xa-gtid- 1;可省略。實現方法修改bool Sq
8、l_cmd_xa_commit:trans_xa_commit(THD *thd)增加預處理操作:當m_xa_opt = XA_ONE_PHASE時,將事務狀態 XA_ACTIVE直接修改為XA_IDLE同樣的,我們也可以將xa prepare前的xa end省略掉。分布式事務 架構演變初期中期數據庫高可用讀寫分離數據拆分stmt協議(prepare)異步連接池 -分布式事務 -SQL解析優化為避免硬解析,業界已提供了兩種方法:Prepare:做一次語句解析后,使用語句編號與變量值進行交互軟解析:相同的語句復用語法解析樹、執行計劃等。詞法解析語法解析后續處理語句輸入硬解析詞法解析語法解析后續處
9、理語句輸入語句編號與變量Prepare詞法解析語法解析后續處理語句輸入語法樹、計劃等相同語句軟解析SQL解析優化 相似性優化相似性解析優化:在詞法解析后進行相似性分析來復用語法解析樹、邏輯 執行計劃等。如何進行相似性分析?如何進行復用?詞法解析語法解析后續處理語句輸入語法樹、計劃等相似語句相似性解析優化SQL解析優化 語句示例selecttbl_listcol_listnameagewhere_exprand=student_infid=name1Select name, age from student_inf where id =1 and name = ”dabao”2Select na
10、me, age FROM student_inf where id =2 andname = “huahua”index:14index:10詞法分析的結果:一組單詞序列每個單詞由類型和值組成詞法解析流程調整:MySQL的SQL解析過程,詞法和語法解析耦合在一起,即語法解析的移進規約動作觸發詞法解析,而不是先完成詞法解析,然后開始語法解 析修改為:先完成詞法解析獲取單詞序列,然后進行語法解析相似性規則:對比2個SQL的單詞序列,單詞一一對比滿足下列2個條件即說明語句相 似:單詞類型相同如果類型非參數,則要求單詞的值相等(忽略大小寫)同樣的我們根據上述2個約束,設計了一個相似性hash算法,用于
11、提升相似性查找性能SQL解析優化 相似性分析LEX_STRING是詞法分析和語法解析的最基礎數據,增加2個字段:index:其在詞法序列中的位置next_lex_string:需要合并的單詞新語句,通過相似語句的語法樹、邏輯執行計劃和當前詞法序列,即可以 進行相應計算操作,實現復用。SQL解析優化 相似性復用復雜查詢數據拆分下,如何解決復雜查詢(例如典型的跨庫Join)?強化Proxy層構建支持復雜查詢的執行計劃代價高昂使用分布式存儲引擎: MariaDB Spider、 MySQL NDBMariaDB Spider:同步調用較多、性能不佳MySQL NDB:缺乏實踐經驗復雜查詢 設計思路(
12、Federated+Proxy)類比MariaDB Spider核心思路:由Federated引擎外掛UPSQL Proxy由UPSQL Proxy實現數據拆分和事務管理優點:實現邏輯簡單功能可控缺點:性能差復雜查詢 設計思路(語句分類路由)復雜查詢 設計思路(協處理器:XProxy)APPUPSQL ProxyMySQLXProxy復雜查詢 設計思路(執行)MySQLMySQL優化、執行121,2: select * from st3 where seq in (select seq from st2 where date “20180411”)proxy_id=aAPPUPSQL Prox
13、yMySQLXProxy復雜查詢 設計思路(執行)MySQLMySQL優化、執行121,2: select * from st3 where seq in (select seq from st2 where date “20180411”)3,4,5: select seq from st2 where date “20180411”3445proxy_id=aAPPUPSQL ProxyMySQLXProxy復雜查詢 設計思路(執行)MySQLMySQL優化、執行121,2: select * from st3 where seq in (select seq from st2 where
14、 date “20180411”)3,4,5: select seq from st2 where date “20180411”44853676,7,8: select * from st3 where seq in (?)proxy_id=aUPSQL ProxyMySQLXProxy復雜查詢 設計思路(執行)MySQLMySQL優化、執行121,2,9,10: select * from st3 where seq in (select seq from st2 where date “20180411”)APP3,4,5: select seq from st2 where date
15、create server test_connectionforeign data wrapper mysqloptions (user shard, password shard, host 6 , port 4048);mysql create table st2 (seq bigint(20) not null default 0,date char(8) not null default ,time char(6) not null default ,flag char(8) not null default ,primary key (seq,date)engine=Federated XProxydefault charset=utf8 connection=test_conne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微生物檢驗項目的設置及評估試題及答案
- 深入理解項目管理中的利益相關者考題試題及答案
- 系統學習證券從業資格試題及答案
- 8《比尾巴》(教學設計)2024-2025學年統編版語文一年級上冊
- 幼兒園課題申報書范例
- 小學安全用電課題申報書
- 關注國際市場對2025年證券從業資格證考試的影響試題及答案
- 臨床微生物檢驗的質量保證體系試題及答案
- 項目進度管理案例試題及答案
- 2025至2031年中國PVC標示牌行業投資前景及策略咨詢研究報告
- 2025年國家糧食和物資儲備局垂直管理系事業單位招聘筆試參考題庫附帶答案詳解
- 《住院患者身體約束的護理》團體標準解讀課件
- 2023-2024學年天津市部分區八年級(下)期中數學試卷(含解析)
- DB32-T 4281-2022 江蘇省建筑工程施工現場專業人員配備標準
- 醫院侵害未成年人案件強制報告制度培訓課件
- 自卸車整車裝配檢驗規范-ok
- 大皂角(中藥飲片炮制規范文檔 性狀 鑒別 用法用量功能與主治 )
- FX挑戰題梯形圖實例
- 工程招標代理標準服務方案
- QC減小屋面剛性防水層裂縫滲漏率
- 川源水泵參數
評論
0/150
提交評論