版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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日志表的寫(xiě)入是自動(dòng)提交的另一個(gè)會(huì)話)減少一個(gè)兩階段事
2、務(wù)主要缺點(diǎn)涉及分布式事務(wù)的后端用戶(hù),都需要配置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 開(kāi)啟分布式事務(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上的本地寫(xiě)鎖,在分布式事務(wù)場(chǎng)景下,出現(xiàn)了循環(huán)等待,成為了分布式死鎖(與傳統(tǒng)數(shù)據(jù)庫(kù)一樣)死鎖的解決路徑:死鎖檢測(cè):剝奪死鎖預(yù)防:避免循環(huán)等待分布式
5、事務(wù) 死鎖檢測(cè)沖突圖(Conflict Graph)死鎖檢測(cè)的核心是獲取鎖信息,但MySQL沒(méi)有提供XAID與鎖的關(guān)聯(lián)信息。解決方案:擴(kuò)展innodb_trx表,增加X(jué)AID信息,與innodb_locks關(guān)聯(lián)即可進(jìn)行分布式死鎖檢測(cè)分布式事務(wù) 死鎖預(yù)防分布式死鎖預(yù)防策略:時(shí)間戳(Timestamp ordering, TO)保證單一時(shí)序的鎖等待(只接受新等舊,或舊等新)實(shí)現(xiàn)方案如下:帶有時(shí)間戳的XAID生成規(guī)則:事務(wù)開(kāi)始時(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ù)高可用讀寫(xiě)分離數(shù)據(jù)拆分stmt協(xié)議(prepare)異步連接池 -分布式事務(wù) -SQL解析優(yōu)化為避免硬解析,業(yè)界已提供了兩種方法:Prepare:做一次語(yǔ)句解析后,使用語(yǔ)句編號(hào)與變量值進(jìn)行交互軟解析:相同的語(yǔ)句復(fù)用語(yǔ)法解析樹(shù)、執(zhí)行計(jì)劃等。詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入硬解析詞法解析語(yǔ)法解析后續(xù)處
9、理語(yǔ)句輸入語(yǔ)句編號(hào)與變量Prepare詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入語(yǔ)法樹(shù)、計(jì)劃等相同語(yǔ)句軟解析SQL解析優(yōu)化 相似性?xún)?yōu)化相似性解析優(yōu)化:在詞法解析后進(jìn)行相似性分析來(lái)復(fù)用語(yǔ)法解析樹(shù)、邏輯 執(zhí)行計(jì)劃等。如何進(jìn)行相似性分析?如何進(jìn)行復(fù)用?詞法解析語(yǔ)法解析后續(xù)處理語(yǔ)句輸入語(yǔ)法樹(shù)、計(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è)單詞由類(lèi)型和值組成詞法解析流程調(diào)整:MySQL的SQL解析過(guò)程,詞法和語(yǔ)法解析耦合在一起,即語(yǔ)法解析的移進(jìn)規(guī)約動(dòng)作觸發(fā)詞法解析,而不是先完成詞法解析,然后開(kāi)始語(yǔ)法解 析修改為:先完成詞法解析獲取單詞序列,然后進(jìn)行語(yǔ)法解析相似性規(guī)則:對(duì)比2個(gè)SQL的單詞序列,單詞一一對(duì)比滿(mǎn)足下列2個(gè)條件即說(shuō)明語(yǔ)句相 似:?jiǎn)卧~類(lèi)型相同如果類(lèi)型非參數(shù),則要求單詞的值相等(忽略大小寫(xiě))同樣的我們根據(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ǔ)法樹(shù)、邏輯執(zhí)行計(jì)劃和當(dāng)前詞法序列,即可以 進(jìn)行相應(yīng)計(jì)算操作,實(shí)現(xiàn)復(fù)用。SQL解析優(yōu)化 相似性復(fù)用復(fù)雜查詢(xún)數(shù)據(jù)拆分下,如何解決復(fù)雜查詢(xún)(例如典型的跨庫(kù)Join)?強(qiáng)化Proxy層構(gòu)建支持復(fù)雜查詢(xún)的執(zhí)行計(jì)劃代價(jià)高昂使用分布式存儲(chǔ)引擎: MariaDB Spider、 MySQL NDBMariaDB Spider:同步調(diào)用較多、性能不佳MySQL NDB:缺乏實(shí)踐經(jīng)驗(yàn)復(fù)雜查詢(xún) 設(shè)計(jì)思路(
12、Federated+Proxy)類(lèi)比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ù)雜查詢(xún) 設(shè)計(jì)思路(語(yǔ)句分類(lèi)路由)復(fù)雜查詢(xún) 設(shè)計(jì)思路(協(xié)處理器:XProxy)APPUPSQL ProxyMySQLXProxy復(fù)雜查詢(xún) 設(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ù)雜查詢(xún) 設(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ù)雜查詢(xún) 設(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ù)雜查詢(xún) 設(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)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鞋類(lèi)設(shè)計(jì)師操作規(guī)范知識(shí)考核試卷含答案
- 自來(lái)水筆制造工安全培訓(xùn)效果模擬考核試卷含答案
- 巷道掘砌工崗前決策判斷考核試卷含答案
- 自然水域救生員崗前工作標(biāo)準(zhǔn)化考核試卷含答案
- 煉焦工安全宣貫?zāi)M考核試卷含答案
- 玻璃及玻璃制品成型工創(chuàng)新意識(shí)競(jìng)賽考核試卷含答案
- 2024年鄭州升達(dá)經(jīng)貿(mào)管理學(xué)院輔導(dǎo)員考試參考題庫(kù)附答案
- 氧化擴(kuò)散工安全宣貫評(píng)優(yōu)考核試卷含答案
- 2025呼和浩特托克托縣招聘社區(qū)工作者及儲(chǔ)備人員筆試通知備考題庫(kù)附答案
- 燒結(jié)球團(tuán)原料工崗前基礎(chǔ)實(shí)戰(zhàn)考核試卷含答案
- 2026年重慶市江津區(qū)社區(qū)專(zhuān)職人員招聘(642人)筆試備考試題及答案解析
- 2026年思明區(qū)公開(kāi)招聘社區(qū)工作者考試備考題庫(kù)及完整答案詳解1套
- 【四年級(jí)】【數(shù)學(xué)】【秋季上】期末家長(zhǎng)會(huì):數(shù)海引航愛(ài)伴成長(zhǎng)【課件】
- 小學(xué)音樂(lè)教師年度述職報(bào)告范本
- 設(shè)備設(shè)施風(fēng)險(xiǎn)分級(jí)管控清單
- 河南交通職業(yè)技術(shù)學(xué)院教師招聘考試歷年真題
- 污水管網(wǎng)工程監(jiān)理規(guī)劃修改
- (機(jī)構(gòu)動(dòng)態(tài)仿真設(shè)計(jì))adams
- 北京市社保信息化發(fā)展評(píng)估研究報(bào)告
- GB/T 8336-2011氣瓶專(zhuān)用螺紋量規(guī)
- GB/T 1048-2019管道元件公稱(chēng)壓力的定義和選用
評(píng)論
0/150
提交評(píng)論