項目10配套軟件mycat技術_第1頁
項目10配套軟件mycat技術_第2頁
項目10配套軟件mycat技術_第3頁
項目10配套軟件mycat技術_第4頁
項目10配套軟件mycat技術_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、MyCat技術分享原理、實現(xiàn)和應用2014.10.31肖雄1.Mycat解決什么?2.Mycat架構3.Mycat應用Mycat解決什么?OracleMySQL MSSQLDB2 性能 容量 高可用.如果我有一個32核心的服務器,我就可以實現(xiàn)1個億的數(shù)據(jù)分片,我有32核心的服務器么?沒有,所以我至今無法實現(xiàn)1個億的數(shù)據(jù)分片。MyCAT s Plan應用應用應用應用MyCat為什么選擇MyCat?1.支持讀寫分離,支持Mysql雙主多從,以及一主多從的模式 2.支持全局表,數(shù)據(jù)自動分片到多個節(jié)點,用于高效表關聯(lián)查詢 3.支持獨有的基于E-R 關系的分片策略,實現(xiàn)了高效的表關聯(lián)查詢 4.自動故障切

2、換,高可用性 5.提供高可用性數(shù)據(jù)分片集群 6.支持JDBC連接ORACLE、DB2、SQL Server,將其模擬為 MySQL Server使用 7.支持Mysql集群,可以作為Proxy使用 8.基于阿里開源的Cobar產(chǎn)品而研發(fā),Cobar的穩(wěn)定性、可靠性、 優(yōu)秀的架構和性能MyCat架構MySQL CLI/JDBC/ODBC/數(shù)據(jù)庫驅(qū)動Mycat結構數(shù)據(jù)庫實例數(shù)據(jù)庫A數(shù)據(jù)庫B數(shù)據(jù)庫CMoreMySQL Socket Protocol HandlerSQL ParserSQL RouterSQL ExecutorDataNodesHeartBeat Checkern 中間件引入n My

3、Cat策略n 系統(tǒng)實現(xiàn)n 實施應用MyCat應用 性能問題 數(shù)據(jù)庫連接過多 E-R分片難處理 可用性問題 Standby切換故障 成本和伸縮性問題 依賴高成本的硬件設備Mycat引入 水平拆分MySQLMySQLMySQLMyCat應用Member表Member表Member表 性能問題 數(shù)據(jù)庫連接過多 E-R分片難處理 可用性問題 Standby切換故障 成本和伸縮性問題 依賴高成本的硬件設備應用MySQLMySQLMySQL應用應用應用應用應用應用應用Member表Member表Member表Mycat引入 連接復用AppIDMEMBE_IDINFO1pavarotti1711pavaro

4、tti17MySQLIDMEMBE_IDINFO4test12345test1234IDMEMBE_IDINFO3abcd9abcd20abcdMySQLMySQLMycatProxyAppAppAppAppAppAppApp 性能問題 數(shù)據(jù)庫連接過多 E-R分片難處理 可用性問題 Standby切換故障 成本和伸縮性問題 依賴高成本的硬件設備MyCat引入MySQL應用Member表Order表Product表1n1.nMySQLMember表Order表Product表1n1.nMyCat 性能問題 數(shù)據(jù)庫連接過多 E-R分片難處理 可用性問題 Standby切換故障 成本和伸縮性問題 依

5、賴高成本的硬件設備MyCat引入IDMEMBE_IDINFO1pavarotti1711pavarotti17MySQLMycatAppXMyCat引入 failoverIDMEMBE_IDINFO1pavarotti1711pavarotti17MySQL Master1MyCatAppIDMEMBE_IDINFO1pavarotti1711pavarotti17MySQL Master2XMySQLReplicationMyCat引入 failoverIDMEMBE_IDINFO1pavarotti1711pavarotti17MycatAppIDMEMBE_IDINFO1pavarott

6、i1711pavarotti17MySQLReplicationMySQL Master1MySQL Master2大綱n 中間件引入n MyCat策略n 系統(tǒng)實現(xiàn)n 實施應用mysqlMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQL拆分數(shù)據(jù)表水平拆分ID MEMBE_IDINFO1pavarotti173abcd4test12345test12349abcd11pavarotti1720abcd水平拆分IDMEMBE_IDINFO1pavarotti173abcd4test12345test12349abcd11pava

7、rotti1720abcd拆分字段水平拆分ID MEMBE_ID INFO1pavarotti173abcd4test12345test12349abcd11pavarotti1720abcdIDMEMBE_IDINFO1pavarotti174test12345test123411pavarotti17ID MEMBE_ID INFO3abcd9abcd20abcdf(pavarotti17)=庫1f(test1234)=庫1f(test1234)=庫1f(pavarotti17)=庫1f(abcd)=庫2f(abcd)=庫2f(abcd)=庫2庫1庫2拆分字段水平拆分ID MEMBE_ID

8、 INFO1pavarotti173abcd4test12345test12349abcd11pavarotti1720abcdIDMEMBE_IDINFO1pavarotti174test12345test123411pavarotti17ID MEMBE_ID INFO3abcd9abcd20abcdf(abcd)=庫2庫1庫2拆分字段f(pavarotti17)=庫1f(test1234)=庫1f(test1234)=庫1f(pavarotti17)=庫1f(abcd)=庫2f(abcd)=庫2路由算法路由算法pavarotti17f(pavarotti17)=庫1路由算法pavarot

9、ti17部分截取hash( ) = 3170972965401路由算法hash(pavarott) = 3170972965401 % 1024 = 5370 1023路由算法hash(pavarott) = 3170972965401 % 1024 = 5370 255 256 511 512 767 768 1023256256256256分庫1分庫2分庫3分庫4路由算法hash(pavarott) = 3170972965401 % 1024 = 5370 255 256 511 512 767 768 1023256256256256分庫1分庫2分庫3分庫4路由算法擴容hash(pav

10、arott) = 3170972965401 % 1024 = 5370 127 128 255 256 383 384 511 512 639 640 767 768 895 896 1023128128128128128128128128分庫1分庫2分庫3分庫4路由算法擴容hash(pavarott) = 3170972965401 % 1024 = 5370 127 128 255 256 383 384 511 512 639 640 767 768 895 896 1023128128128128128128128128分庫1分庫2分庫3分庫4分庫5分庫6分庫7分庫8原分庫1分庫2分

11、庫3分庫4原原原路由算法非均勻分布hash(pavarott) = 3170972965401 % 1024 = 5370 511 512 767 768 895 896 1023512256128128分庫1分庫2分庫3分庫4拆分表的數(shù)據(jù)訪問SQL轉(zhuǎn)發(fā)IDMEMBE_IDINFO1pavarotti174test12345test123411pavarotti17IDMEMBE_IDINFO3abcd9abcd20abcdMycatAppselect * from tb1 where member_id=test1234拆分表的數(shù)據(jù)訪問SQL轉(zhuǎn)發(fā)IDMEMBE_IDINFO1pavarott

12、i174test12345test123411pavarotti17IDMEMBE_IDINFO3abcd9abcd20abcdMycatAppselect * from tb1 where member_id=test1234IDMEMBE_IDINFO1pavarotti174test12345test123411pavarotti17IDMEMBE_IDINFO3abcd9abcd20abcdMycatAppSELECT * FROM tb1 WHERE member_id IN (test1234,pavarotti17,abcd)拆分表的數(shù)據(jù)訪問SQL轉(zhuǎn)發(fā)IDMEMBE_IDINFO

13、1pavarotti174test12345test123411pavarotti17IDMEMBE_IDINFO3abcd9abcd20abcdMycatAppselect * from tb1 where member_id in (test1234,pavarotti17)select * from tb1 where member_id in (abcd)拆分表的數(shù)據(jù)訪問SQL轉(zhuǎn)發(fā)IDMEMBE_IDINFO1pavarotti174test12345test123411pavarotti17IDMEMBE_IDINFO3abcd9abcd20abcdResultMerger前臺通信R

14、esultSet:row1row2ResultSet:row3row4row5ResultSet:row3row1row4row5row2拆分表的數(shù)據(jù)訪問結果返回MyCat的策略 基于表的水平拆分和分布根據(jù)字段值的一致性Hash分布 根據(jù)字段值的范圍分布 根據(jù)字段值的固定分布 數(shù)據(jù)查詢方式根據(jù)where中的拆分字段分發(fā) SQL語句其他元素的處理將Cobar收到的SQL語句做變換 分發(fā)到各個分庫執(zhí)行對執(zhí)行結果合并、處理 保證返回前端的內(nèi)容滿足語義JOIN有限的處理 跨庫JOIN問題SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAMEID

15、MEMBE_ID2zzzz4xyzxyzIDNAME4efghijk5aaaa6abcdIDMEMBE_ID1efghijk3xxxxxx5abcdIDNAME2zzzz3xyzxyztb1tb1tb2tb2IDMEMBER_IDIDNAME1efghijk4efghijk5abcd6abcd2zzzz2zzzz4xyzxyz3xyzxyz迭代查詢SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAMEIDMEMBE_ID2zzzz4xyzxyzIDNAME4efghijk5aaaa6abcdIDMEMBE_ID1efghijk3xxxx

16、xx5abcdIDNAME2zzzz3xyzxyztb1tb1tb2tb2FOR row1 IN select * FROM tb1ADD(SELECT * FROM tb2 WHERE = row1.member_id)TO RESULT跨庫索引IDMEMBE_ID2zzzz4xyzxyzIDNAME4efghijk5aaaa6abcdIDMEMBE_ID1efghijk3xxxxxx5abcdIDNAME2zzzz3xyzxyztb1tb1tb2tb2ID1ID2JOIN_COL22zzzz43xyzxyzidxID1ID2JOIN_COL14efghijk56abcdi

17、dx掃描idx,再根據(jù)每一行的id1,id2查到最終結果跨庫索引IDMEMBE_ID2zzzz4xyzxyzIDNAME4efghijk5aaaa6abcdIDMEMBE_ID1efghijk3xxxxxx5abcdIDNAME2zzzz3xyzxyztb1tb1tb2tb2SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAME WHERE t1.id = 5SELECT * FROM idx WHERE id1 = 5再根據(jù)id1,id2查到最終結果跨庫索引IDMEMBE_ID2zzzz4xyzxyzIDNAME4efghijk5aa

18、aa6abcdIDMEMBE_ID1efghijk3xxxxxx5abcdIDNAME2zzzz3xyzxyztb1tb1tb2tb2ID1ID2JOIN_COL22zzzz43xyzxyzidxID1ID2JOIN_COL14efghijk56abcdidx一定以 JOIN_COL 為索引的拆分字段嗎?跨庫索引SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAME WHERE t1.gmt600IDMEMBE_IDGMT2zzzz5254xyzxyz1010IDNAME4efghijk5aaaa6abcdIDMEMBE_IDGMT1e

19、fghijk12053xxxxxx1315abcd604IDNAME2zzzz3xyzxyztb1tb1tb2tb2跨庫索引IDMEMBE_IDGMT2zzzz5254xyzxyz1010IDNAME4efghijk5aaaa6abcdIDMEMBE_IDGMT1efghijk12053xxxxxx1315abcd604IDNAME2zzzz3xyzxyztb1tb1tb2tb2ID1ID2JOIN_COL22zzzz43xyzxyzidxID1ID2JOIN_COL14efghijk56abcdidxIDMEMBE_ID2zzzz4xyzxyzIDMEMBE_ID1efghijk3xxxxx

20、x5abcdtb1tb1ID1ID2JOIN_COL22zzzz43xyzxyzidxID1ID2JOIN_COL14efghijk56abcdidxSELECT idx.id2, tb1.* FROM idx INNER JOIN tb1 ON idx.id1=tb1.id WHERE t1.gmt600SELECT idx.id2, tb1.* FROM idx INNER JOIN tb1 ON idx.id1=tb1.id WHERE t1.gmt600SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAME WHERE t1.g

21、mt600跨庫索引跨庫索引IDMEMBE_IDGMT2zzzz5254xyzxyz1010IDNAMETIME4efghijk1235aaaa9226abcd222IDMEMBE_IDGMT1efghijk12053xxxxxx1315abcd604IDNAMETIME2zzzz12013xyzxyz1111tb1tb1tb2tb2SELECT * FROM tb1 INNER JOIN tb2 ON t1.MEMBER_ID=t2.NAME WHERE t1.gmt600 AND t2.time600ID1ID2JOIN_COLTIME22zzzz120143xyzxyz1111idx跨庫索

22、引ID1ID2JOIN_COLTIME22zzzz120143xyzxyz1111idxID1ID2JOIN_COLTIME14efghijk12356abcd222idx 索引表的拆分WHERE條件中的字段所在表的拆分字段,作為索引拆分字段 索引包含兩張表的主鍵JOIN字段WHERE中的其他字段 索引的更新分布式事務的支持SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2select . order by c1 limit 0, 6select . order by c1 limit 0, 6select . order by c1 limit 0, 6分庫1

23、分庫2分庫3cobarOrder By/Limit分庫1分庫2分庫3Order By/Limit456327810651111314973返回結果返回結果返回結果8SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2分庫1分庫2分庫3Order By/Limit456327810651111314973返回結果返回結果返回結果80最終結果集SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2分庫1分庫2分庫3Order By/Limit45632781065111314973返回結果返回結果返回結果81最終結果集SELECT c1 F

24、ROM tb1 ORDER BY c1 LIMIT 4, 2分庫1分庫2分庫3Order By/Limit4563781065111314973返回結果返回結果返回結果82最終結果集SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2分庫1分庫2分庫3Order By/Limit456781065111314973返回結果返回結果返回結果83最終結果集SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2分庫1分庫2分庫3Order By/Limit45678106511131497返回結果返回結果返回結果84最終結果集SELECT c

25、1 FROM tb1 ORDER BY c1 LIMIT 4, 2最終結果集分庫1分庫2分庫3Order By/Limit5678106511131497返回結果返回結果返回結果844SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2最終結果集分庫1分庫2分庫3Order By/Limit4678106511131497返回結果返回結果返回結果845SELECT c1 FROM tb1 ORDER BY c1 LIMIT 4, 2Order By/Limit 方案總結select c1 from tb1 order by c1 limit 100000000,

26、2 所有分庫都要查詢100000002條數(shù)據(jù) Cobar需要遍歷100000002條數(shù)據(jù) 對如下SQL 一次交互得到結果 Offset大小有限制Order By / Limit 優(yōu)化 目標:解決 查詢量大問題 遍歷量大問題 前提 各個分庫數(shù)據(jù)分布大致一樣select c1 from tb1 order by c1 limit 9999999, 4select . order by c1 limit 33333333, 4select . order by c1 limit 33333333, 4select . order by c1 limit 33333333, 4分庫1分庫2分庫3 st

27、ep1:分成3條語句發(fā)給分庫分庫1分庫2分庫374538691076119返回結果返回結果返回結果select c1 from tb1 order by c1 limit 9999999, 4 找出查詢結果中最小和最大值分庫1分庫2分庫374538691076119返回結果返回結果返回結果 step2:以最小值和最大值為界再查詢select c1 from tb1 order by c1 limit 9999999, 43115311分庫1分庫2分庫374538691076119返回結果返回結果返回結果 step3:反查出每一個返回結果的offsetselect c1 from tb1 ord

28、er by c1 limit 9999999, 4311531133333331條33333333條33333332條分庫1分庫2分庫374538691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 431153119999996分庫1分庫2分庫374538691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 41153119999997分庫1分庫2分庫37458691076119返回結果返回結果返回結果

29、 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 41153119999998分庫1分庫2分庫37458691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 4115119999999最終結果集最終結果集分庫1分庫2分庫37458691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 4115119999999最終結果集分庫1分庫2分庫374 586

30、91076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 4115119999999最終結果集分庫1分庫2分庫374 58691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 4115119999999最終結果集分庫1分庫2分庫374 58691076119返回結果返回結果返回結果 類似于原始方案select c1 from tb1 order by c1 limit 9999999, 411511999999

31、9Order By / Limit 再優(yōu)化 Step1不必得到全部結果 select min(c1) mi, max(c1) ma from (select c1 from tb1 order by c1 limit 3333333,4) t Step2和Step3合并 select * from (select * from tb1 where c1 between mi and ma) t1, (select count(*) from tb1 where c1 mi) t2Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112

32、.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956SELECT sum(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.322227.91318.860499.9567.61314.4604Group BySELECT sum(price) FROM tb1 G

33、ROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956SELECT sum(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.322227.91318.86047.61314.4604最終結果集99.956Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956SELECT su

34、m(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.322227.91318.86047.61314.4604最終結果集99.956最終結果集Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956SELECT sum(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.3222215.51318.86044.460499.956最終結果集

35、Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.460447.6131699.956SELECT sum(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.3222215.513113.260499.956最終結果集Group BySELECT sum(price) FROM tb1 GROUP BY c1IDPRICEC1112.3222231.613158.860476.3131IDPRICEC124.4

36、60447.6131699.956SELECT sum(price), c1 FROM tb1 GROUP BY c1 ORDER BY c112.3222215.513113.260499.956SQL執(zhí)行策略總結 WHERE - 基于SQL轉(zhuǎn)發(fā) JOIN - 迭代 分布式索引 ORDER BY/LIMIT - 多次查詢減小數(shù)據(jù)量 GROUP BY - 增加ORDER BYMyCat 事務支持前端連接sql1sql2commitMyCat 事務支持前端連接分庫1連接sql1sql2commit MyCat 事務支持前端連接分庫1連接sql1commit分庫2連接sql2分庫3連接sql2My

37、Cat 事務支持前端連接分庫1連接sql1commit分庫2連接sql2分庫3連接sql2 Commit有先后:隔離性問題 Commit有失敗:一致性問題大綱n 中間件引入n MyCat策略n 水平拆分的數(shù)據(jù)分布n 幾種SQL元素的執(zhí)行策略n 事務策略n 系統(tǒng)實現(xiàn)n 實施應用schematableSpacedataNodedatasourcecndbpc2主備主備defaultoffer0主備offer1主備detail0主備defaultdefaultofferdetaildetail邏輯層次 接口同MySQLjdbc:mysql:/cobarIp:8066/cndb?user=foo&am

38、p;password=bar MySQLMySQLMySQLMycat結構Front-end CommunicationMySQL Protcol Adaptor (BIO)Application1MySQLMySQL ProtocolMySQLMySQLData NodesMonitorConfigureHA PoolMySQLMySQLProcessor(1)Processor(n)SQL ExecutorSQL RouterSQL ParserResultMergerSQL ExecutorSQL RouterSQL ParserResultMerger. ManagerMySQL Pr

39、otocolMySQL Protocol MySQL Protocol MySQL ProtocolManagementProtocolMySQLMySQLMySQLCobar結構Front-end CommunicationMySQL Protcol Adaptor (BIO)Application1MySQLMySQL ProtocolMySQLMySQLData NodesMonitorConfigureHA PoolMySQLMySQLProcessor(1)Processor(n)SQL ExecutorSQL RouterSQL ParserResultMergerSQL Exec

40、utorSQL RouterSQL ParserResultMerger. ManagerMySQL ProtocolMySQL Protocol MySQL Protocol MySQL ProtocolManagementProtocolApplication1JDBC和Server的通信協(xié)議MySQLJDBCDriverMySQLServerMySQL ProtocolJDBC和Server的通信協(xié)議PreparedStatement ps = conn.prepareStatement( select * from tb1 where id=?); ps.setLong(1, 1234

41、5);ResultSet rs = ps.executeQuery();MySQLServerApplication1MySQLJDBCDriverJDBC和Server的通信協(xié)議MySQLServerApplication1MySQLJDBCDriverPreparedStatement ps = conn.prepareStatement( select * from tb1 where id=?); ps.setLong(1, 12345);ResultSet rs = ps.executeQuery();select * from tb1where id=?stmt_id/param_

42、num/columm_numparameter_typecolumn_typeJDBC和Server的通信協(xié)議PreparedStatement ps = conn.prepareStatement( select * from tb1 where id=?); ps.setLong(1, 12345);ResultSet rs = ps.executeQuery();MySQLServerApplication1MySQLJDBCDriverJDBC和Server的通信協(xié)議PreparedStatement ps = conn.prepareStatement( select * from

43、tb1 where id=?); ps.setLong(1, 12345);ResultSet rs = ps.executeQuery();MySQLServerApplication1MySQLJDBCDriverstmt_id param+field_countcolumn_typecolumn_val+column_val+JDBC和Server的通信協(xié)議PreparedStatement ps = conn.prepareStatement( select * from tb1 where id=?); ps.setLong(1, 12345);ResultSet rs = ps.e

44、xecuteQuery();Application1MySQLJDBCDriverstmt_id param+field_countcolumn_typecolumn_val+column_val+MySQLServerJDBC和Server的通信協(xié)議Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery( “select * from tb1 where id=12345”);Application1MySQLJDBCDriversqlfield_countcolumn_typecolumn_val+c

45、olumn_val+MySQLServerJDBC和Server的通信協(xié)議Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery( “select * from tb1 where id=12345”);Application1MySQLJDBCDriversqlfield_countcolumn_typecolumn_val+column_val+MySQLServerCobarServerProcessor(1)Processor(n)MySQLMySQLMySQLMycat結構Front-end C

46、ommunicationMySQL Protcol Adaptor (BIO)Application1MySQLMySQL ProtocolMySQLMySQLData NodesMonitorConfigureHA PoolMySQLMySQLSQL ExecutorSQL RouterSQL ParserResultMergerSQL ExecutorSQL RouterSQL ParserResultMerger. ManagerMySQL ProtocolMySQL Protocol MySQL Protocol MySQL ProtocolManagementProtocolSQL

47、+ParametersResultSetMetaDataResultSet(Rows). MySQLMySQLMySQLMycat結構Front-end CommunicationMySQL Protcol Adaptor (BIO)Application1MySQLMySQL ProtocolMySQLMySQLData NodesMonitorConfigureHA PoolMySQLMySQLProcessor(1)Processor(n)SQL ExecutorSQL RouterResultMergerSQL ExecutorSQL RouterResultMergerManager

48、MySQL ProtocolMySQL Protocol MySQL Protocol MySQL ProtocolManagementProtocolSQL ParserSQL ParserSELECT id, member_id FROM wp_image WHERE member_id = 123SQL Parserselectidmember_idwp_image=member_id123exprListfromProcessor(1)Processor(n)MySQLMySQLMySQLMycat結構Front-end CommunicationApplication1MySQLMySQL Prot

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論