



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、金融分布式數(shù)據(jù)庫(kù)架構(gòu)實(shí)踐技術(shù)創(chuàng)新 變革未來(lái)分布式數(shù)據(jù)庫(kù)初始架構(gòu)SpannerVSProxyRaftPaxosMapReduceTrueTimeNewSQLCAPMPPSQLDatabaseOLTPNoSQLOLAPACIDMVCC2PCMGRBASEDistributed Index External Consistency分布式事務(wù)核心思路使用后端數(shù)據(jù)庫(kù)存儲(chǔ)XA日志使用最后參與者策略設(shè)計(jì)思路后參與者使用階段提交負(fù)責(zé)日志記錄主要區(qū)別:參最后者退化為一階提交,并,并負(fù)責(zé)XA日志記錄。主要優(yōu)勢(shì)不需要使用單獨(dú)會(huì)話進(jìn)行xa日志記錄 (友商方案中向xa日志表的寫入是自動(dòng)提交的另一個(gè)會(huì)話)減少一個(gè)兩階段事
2、務(wù)主要缺點(diǎn)涉及分布式事務(wù)的后端用戶,都需要配置xa日志表權(quán)限,因而存在運(yùn) 維風(fēng)險(xiǎn)。友商方案銀聯(lián)方案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、務(wù) 方案對(duì)比分布式事務(wù) 分布式死鎖分布式死鎖:場(chǎng)景(互斥、請(qǐng)求與保持、不剝奪、循環(huán)等待):a & b 開啟分布式事務(wù)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上的本地寫鎖,在分布式事務(wù)場(chǎng)景下,出現(xiàn)了循環(huán)等待,成為了分布式死鎖(與傳統(tǒng)數(shù)據(jù)庫(kù)一樣)死鎖的解決路徑:死鎖檢測(cè):剝奪死鎖預(yù)防:避免循環(huán)等待分布式
5、事務(wù) 死鎖檢測(cè)沖突圖(Conflict Graph)死鎖檢測(cè)的核心是獲取鎖信息,但MySQL沒有提供XAID與鎖的關(guān)聯(lián)信息。解決方案:擴(kuò)展innodb_trx表,增加XAID信息,與innodb_locks關(guān)聯(lián)即可進(jìn)行分布式死鎖檢測(cè)分布式事務(wù) 死鎖預(yù)防分布式死鎖預(yù)防策略:時(shí)間戳(Timestamp ordering, TO)保證單一時(shí)序的鎖等待(只接受新等舊,或舊等新)實(shí)現(xiàn)方案如下:帶有時(shí)間戳的XAID生成規(guī)則:事務(wù)開始時(shí)間 + TM(proxy)事務(wù)序號(hào) + TM編號(hào) + datanode + .修改MySQL死鎖檢測(cè)策略,增加分布式死鎖預(yù)防策略在DeadlockChecker:search
6、() 中獲取xaid,根據(jù)死鎖預(yù)防策略進(jìn)行處理分布式事務(wù) 進(jìn)一步優(yōu)化退,者當(dāng)前方案多一改進(jìn)方案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;可省略。實(shí)現(xiàn)方法修改bool Sq
8、l_cmd_xa_commit:trans_xa_commit(THD *thd)增加預(yù)處理操作:當(dāng)m_xa_opt = XA_ONE_PHASE時(shí),將事務(wù)狀態(tài) XA_ACTIVE直接修改為XA_IDLE同樣的,我們也可以將xa prepare前的xa end省略掉。分布式事務(wù) 架構(gòu)演變初期中期數(shù)據(jù)庫(kù)高可用讀寫分離數(shù)據(jù)拆分stmt協(xié)議(prepare)異步連接池 -分布式事務(wù) -SQL解析優(yōu)化為避免硬解析,業(yè)界已提供了兩種方法:Prepare:做一次語(yǔ)句解析后,使用語(yǔ)句編號(hào)與變量值進(jìn)行交互軟解析:相同的語(yǔ)句復(fù)用語(yǔ)法解析樹、執(zhí)行計(jì)劃等。詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入硬解析詞法解析語(yǔ)法解析后續(xù)處
9、理語(yǔ)句輸入語(yǔ)句編號(hào)與變量Prepare詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入語(yǔ)法樹、計(jì)劃等相同語(yǔ)句軟解析SQL解析優(yōu)化 相似性優(yōu)化相似性解析優(yōu)化:在詞法解析后進(jìn)行相似性分析來(lái)復(fù)用語(yǔ)法解析樹、邏輯 執(zhí)行計(jì)劃等。如何進(jìn)行相似性分析?如何進(jìn)行復(fù)用?詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入語(yǔ)法樹、計(jì)劃等相似語(yǔ)句相似性解析優(yōu)化SQL解析優(yōu)化 語(yǔ)句示例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詞法分析的結(jié)果:一組單詞序列每個(gè)單詞由類型和值組成詞法解析流程調(diào)整:MySQL的SQL解析過(guò)程,詞法和語(yǔ)法解析耦合在一起,即語(yǔ)法解析的移進(jìn)規(guī)約動(dòng)作觸發(fā)詞法解析,而不是先完成詞法解析,然后開始語(yǔ)法解 析修改為:先完成詞法解析獲取單詞序列,然后進(jìn)行語(yǔ)法解析相似性規(guī)則:對(duì)比2個(gè)SQL的單詞序列,單詞一一對(duì)比滿足下列2個(gè)條件即說(shuō)明語(yǔ)句相 似:?jiǎn)卧~類型相同如果類型非參數(shù),則要求單詞的值相等(忽略大小寫)同樣的我們根據(jù)上述2個(gè)約束,設(shè)計(jì)了一個(gè)相似性hash算法,用于
11、提升相似性查找性能SQL解析優(yōu)化 相似性分析LEX_STRING是詞法分析和語(yǔ)法解析的最基礎(chǔ)數(shù)據(jù),增加2個(gè)字段:index:其在詞法序列中的位置next_lex_string:需要合并的單詞新語(yǔ)句,通過(guò)相似語(yǔ)句的語(yǔ)法樹、邏輯執(zhí)行計(jì)劃和當(dāng)前詞法序列,即可以 進(jìn)行相應(yīng)計(jì)算操作,實(shí)現(xiàn)復(fù)用。SQL解析優(yōu)化 相似性復(fù)用復(fù)雜查詢數(shù)據(jù)拆分下,如何解決復(fù)雜查詢(例如典型的跨庫(kù)Join)?強(qiáng)化Proxy層構(gòu)建支持復(fù)雜查詢的執(zhí)行計(jì)劃代價(jià)高昂使用分布式存儲(chǔ)引擎: MariaDB Spider、 MySQL NDBMariaDB Spider:同步調(diào)用較多、性能不佳MySQL NDB:缺乏實(shí)踐經(jīng)驗(yàn)復(fù)雜查詢 設(shè)計(jì)思路(
12、Federated+Proxy)類比MariaDB Spider核心思路:由Federated引擎外掛UPSQL Proxy由UPSQL Proxy實(shí)現(xiàn)數(shù)據(jù)拆分和事務(wù)管理優(yōu)點(diǎn):實(shí)現(xiàn)邏輯簡(jiǎn)單功能可控缺點(diǎn):性能差復(fù)雜查詢 設(shè)計(jì)思路(語(yǔ)句分類路由)復(fù)雜查詢 設(shè)計(jì)思路(協(xié)處理器:XProxy)APPUPSQL ProxyMySQLXProxy復(fù)雜查詢 設(shè)計(jì)思路(執(zhí)行)MySQLMySQL優(yōu)化、執(zhí)行121,2: select * from st3 where seq in (select seq from st2 where date “20180411”)proxy_id=aAPPUPSQL Prox
13、yMySQLXProxy復(fù)雜查詢 設(shè)計(jì)思路(執(zhí)行)MySQLMySQL優(yōu)化、執(zhí)行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復(fù)雜查詢 設(shè)計(jì)思路(執(zhí)行)MySQLMySQL優(yōu)化、執(zhí)行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復(fù)雜查詢 設(shè)計(jì)思路(執(zhí)行)MySQLMySQL優(yōu)化、執(zhí)行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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家裝水電安裝合同范本
- 光纖熔接工程外包勞務(wù)合同
- 承租機(jī)械設(shè)備租賃合同
- 提高辦公效率的策略與方法研究
- 2025年青海貨運(yùn)從業(yè)資格證考試500題
- 出租房房屋租賃合同
- 個(gè)人加工合同協(xié)議書
- 抗滑樁基礎(chǔ)勞務(wù)施工合同
- 股份制公司運(yùn)營(yíng)優(yōu)化方案
- 2025年黑龍江貨運(yùn)從業(yè)資格證模擬考試題庫(kù)及答案大全
- API520-安全閥計(jì)算PART1(中文版)
- 生產(chǎn)車間管理制度辦法
- 機(jī)電企業(yè)管理導(dǎo)論第1章課件
- 水平一足球全冊(cè)教案
- 蘇教版科學(xué)二年級(jí)下冊(cè)全冊(cè)教案
- 約束評(píng)分標(biāo)準(zhǔn)
- GB/T 28799.2-2020冷熱水用耐熱聚乙烯(PE-RT)管道系統(tǒng)第2部分:管材
- 法律和道德的關(guān)系 課件
- GB 16780-2021水泥單位產(chǎn)品能源消耗限額
- 全面推進(jìn)依法行政課件
- 政務(wù)服務(wù)一網(wǎng)通辦平臺(tái)解決方案-最新
評(píng)論
0/150
提交評(píng)論