电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺析MySQL的WriteSet并行復制

瀏覽:2日期:2023-10-09 07:58:46

【歷史背景】

歲月更迭中我已經從事MySQL-DBA這個工作三個年頭,見證MySQL從“基本可用”,“邊緣系統可以用MySQL”,“哦操!你怎么不用MySQL”;

正所謂!“一個數據庫的境遇既取決于歷史的進程,取決于它的自我奮斗!”,關于“歷史的進程”在此不表,關于“自我奮斗”這里也只想談一下并行復制的幾個關鍵時間結點

總的來說MySQL關于并行復制到目前為止經歷過三個比較關鍵的時間結點“庫間并發”,“組提交”,“寫集合”;真可謂是江山代有人才出,前浪死在沙灘上;總的來說就后面的比前面的不知道高到哪里去了!

【庫間并發】

庫間并發的理論依據是這樣的 ---- 一個實例內可能會有多個庫(schema),不同的庫之間沒有什么依賴關系,所以在slave那邊為每一個庫(schema)單獨起一個SQL線程,這樣就能通過多線程并行復制的方式來提高主從復制的效率。

這個理論聽起來沒問題,但是事實上一個實例也就一個業務庫,所以這種庫間并發就沒什么作用了;也就是說這個方式的適用場景比較少,針對這個不足直到“組提交”才解決!

【組提交】

組提交的理論依據是這樣的 --- 如果多個事務他們能在同一時間內提交,這個就間接說明了這個幾個事務鎖上是沒有沖突的,也是就說他們各自持有不同的鎖,互不影響;邏輯上我們幾個事務看一個組,在slave以“組”為單位分配給SQL線程執行,這樣多個SQL線程就可以并行跑了;而且不在以庫為并行的粒度,效果上要比“庫間并發”要好一些。

這個事實上也有一些問題,因為它要求庫上要有一定的并發度,不然就有可能變成每個組里面只有一個事務,這樣就有串行沒什么區別了,為了解決這個問題MySQL提供了兩個參數就是希望在提交時先等一等,盡可能的讓組內多一些事務,以提高并行復制的效率。

“binlog_group_commit_sync_no_delay_count” 設置一個下水位,也就是說一個組要湊足多少個事務再提交;為子防止永遠也湊不足

那么多個事務MySQL還以時間為維度給出了另一個參數“binlog_group_commit_sync_delay”這個參數就是最多等多久,超過這個時間長度后就算沒有湊足也提交。 

親身經歷呀! 這兩個參數特別難找到合的值,就算今天合適,過幾天業務上有點變化后,又可能變的不合適了;如果MySQL能自己達到一個自適應的效果就好了;這個自適用要到WriteSet才完成(WriteSet并不是通過自動調整這兩個參數來完成,它采用了完全不同的解決思路)。

【WriteSet】

WriteSet解決了什么問題?當然是解決了“組提交”的問題啦! 說了和沒說一個樣,好下面我們來舉個例子(比較學院派);假設你第一天更新了id == 1 的那一行,第二天你更新了id == 2 的那一行,第三天有個slave過來同步你的數據啦! 以“組提交”的尿性,這兩個更新會被打包到不同的“組”,也就是說會有兩個組;由于每個組內只有一個事務,所以邏輯上就串行了,起來!

身為DBA的你一可以看出來這兩個事實上是可以打包到同一個組里來的,因為他們互不沖突,就算打包到同一個組也不引起數據的不一致。 于是你有兩個辦法

辦法1): 妹妹你大膽的把“binlog_group_commit_sync_no_delay_count”設置成 2,也就是說一個組至少要包含兩個事務,并且把“binlog_group_commit_sync_delay”設置成24小時以上!如果你真的做了,你就可以回家了,你的數據庫太慢了(第一條update等了一天),才完成!

辦法2): 叫MySQL用一本小本子記下它最近改了什么,如果現在要改的數據和之前的數據不沖突,那么他們就可以把包到同一個組;還是我們剛才的例子,由于第二天改的值的id==2所以它和第一天的不沖突,那么它完全可以把第二天的更新和第一天的更新打包到同一個組。這樣組里面就有兩個事務了,在slave第三天回放時就會有一種并行的效果。

這本小本子這么牛逼可以做大一點嗎?當然!binlog_transaction_dependency_history_size 這個參數就小本子的容量了;那我的MySQL有這本小本子嗎? 如果你的mysql比mysql-5.7.22新的話,小本子就是它生來就有的。

也就是說“WriteSet”是站在“組提交”這個巨人的基礎之間建立起來的,而且是在master上做的自“適應”打包分組,所以你只要在master上新增兩個參數

binlog_transaction_dependency_tracking = WRITESET # COMMIT_ORDER transaction_write_set_extraction = XXHASH64

理論說完了,下面我們看一下實踐。

【WriteSet實踐】

基于WriteSet的并行復制環境怎么搭建我這里就不說了,也就是比正常的“組提交”在master上多加兩個參數,不講了;我這里想直接給出兩種并行復制方式下的行為變化。

1): 我們要執行的目標SQL如下

create database tempdb;use tempdb;create table person(id int not null auto_increment primary key,name int);insert into person(name) values(1);insert into person(name) values(2);insert into person(name) values(3);insert into person(name) values(5);

2): 看一下組提交對上面SQL的分組情況

淺析MySQL的WriteSet并行復制

3): 看write_set的對“組提交”優化后的情況

淺析MySQL的WriteSet并行復制

可以看到各個insert是可以并行執行的,所以它們被分到了同個組(last_committed相同);last_committed,sequence_number,這兩個值在binlog里面記著就有,我在解析binlog的時候習慣使用如下選項

mysqlbinlog -vvv --base64-output=’decode-rows’ mysql-bin.000002

【總結】

WriteSet是在“組提交”方式上建立起來的,一種新的并行復制實現;相比“組提交”來說更加靈活;當然,由于并發度上去了,相比“組提交”WriteSet在性能上會更加好一些,在一些WriteSet沒有辦法是否沖突時,能平滑過度到“組提交”模式。

以上就是淺析MySQL的WriteSet并行復制的詳細內容,更多關于MySQL WriteSet并行復制的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 中国品牌排名投票_十大品牌榜单_中国著名品牌【中国品牌榜】 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 菏泽知彼网络科技有限公司| 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 深圳湾1号房价_深圳湾1号二手房源 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 北京租车牌|京牌指标租赁|小客车指标出租 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 |