国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MySQL 的 MTS

IT那活兒 / 376人閱讀
MySQL 的 MTS
點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!! 

  
Mysql的并行復制技術演變,mysql并行復制enhanced multi-threaded slave, 5.6是基于schema并行,到5.7的group commit在這之前redo log和binlog串行刷盤很影響性能,group commit出現將事務分組,組內的binlog刷盤動作交給一個事務進行,實現組提交目的,通過redo log和binlog的組提交解決磁盤IO的性能。


MTS based on schema

涉及不同 schema 的 DML 操作,在 slave 端可以按 schema 粒度并行回放,弱點也很明顯,如果實例中的 schema 較少,并行回放效果并不理想。其優化方式也比較簡單 slave_parallel_workers 小于等于 master 的 schema 數量。

LOGICAL_CLOCK并行復制

參數 slave-parallel-type 來控制并行復制策略,配置為 LOGICAL_CLOCK。

原理:redo log組提交(group commit)策略,為同一組一起提交的事務維護一個commit_id,并寫入binlog日志。日志傳到備庫后,coordinator會以輪詢的方式將相同commit_id的事務分發到多個worker執行,待一組執行完成后,再取下一批。

在 binlog 中每個事務會有多出兩個標簽

  • sequence_number:隨每個事務遞增的自增 ID,每次新的 binlog 會從 1 開始;

  • last_committed:當前事務所依賴的上次事務的 sequence_number,每次新的 binlog 會從 0 開始。

last_committed 相同值的事務代表同時提交的,可以并行回放。
#180105 20:08:33 ... last_committed=7201 sequence_number=7203
#180105 20:08:33 ... last_committed=7203 sequence_number=7204
#180105 20:08:33 ... last_committed=7203 sequence_number=7205
#180105 20:08:33 ... last_committed=7203 sequence_number=7206
#180105 20:08:33 ... last_committed=7205 sequence_number=7207
  • 7203 事務依賴 7201;
  • 7204、7205、7206 事務依賴 7203,可以并行提交;
  • 7207 事務依賴 7205,由于 7205 依賴 7203,那么在 7205 執行完后,7207 可以和 7206 并行執行。
優化方式通過調整 master group commit size 和 slave 的并行 work 線程數,提升并行效率。
master group commit size 和并發壓力,master group commit size主要跟下面兩個參數相關:
  • binlog_group_commit_sync_delay

    表示 binlog 提交事務前等待多少微秒;

  • binlog_group_commit_sync_no_delay_count

    表示同步隊列最大允許的事務數,當等待提交的線程達到多少時, 就不在等待,在 master 低并發的負載下,并行回放效果就不好了,如果想要提高并行度,需要增加 binlog_group_commit_sync_delay,積累較多的分組大小,副作用是拉低 master 吞吐量。

Write set

上述基于組提交的并行存在一些問題,組提交的理論依據是如果多個事務他們能在同一時間內提交,這個就間接說明了這個幾個事務鎖上是沒有沖突的,也是就說他們各自持有不同的鎖,互不影響;邏輯上可以把這幾個事務看成一個組,在slave以“組”為單位分配給sql線程執行,這樣多個sql線程就可以并行跑了。所以它要求庫上要有一定的并發度,不然就有可能變成每個組里面只有一個事務,這樣就有串行沒什么區別了。

writeset就解決了上述的問題,如果兩次修改的數據沒有沖突,就會打包到一個組里面并行回放,WriteSet通過檢測兩個事務是否更新了相同的記錄來判斷事務能否并行回放的,因此需要在運行時保存已經提交的事務信息以記錄歷史事務更新了哪些行。記錄歷史事務的參數為binlog_transaction_dependency_history_size。該值越大可以記錄更多的已經提交的事務信息,不過需要注意的是,這個值并非指事務大小,而是指追蹤的事務更新信息的數量。

開啟writeset:

  • binlog_format=row
  • 開啟 transaction_write_set_extraction=XXHASH64
  • 更新表必須有主鍵,如果更新事務包含外鍵,則退回 commit_order 方式
  • binlog_transaction_dependency_tracking = [COMMIT_ORDER | WRITESET | WRITESET_SESSION]
slave 上開啟 slave_parallel_workers。

本文作者:饒茂林(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129297.html

相關文章

  • 《30天自制操作系統》第9天

    摘要:內存容量檢查要做內存管理,首先得知道內存的容量,怎么知道內存的容量呢可以告訴我們答案。但使用稍微有點麻煩,于是,作者決定自己寫程序檢查內存容量。狀態寄存器的第位位,對齊檢查,在中即使將它設置為,它也會變成,而中不會出現這種情況。 第九天 內存管理 1.整理源文件 這一節只是進行了代碼整理,把...

    zzzmh 評論0 收藏0
  • 媒體轉碼截圖和工作流場景常見問題【系列一】

    摘要:首先確保輸入文件內容正常,其次保證截圖配置是否符合規格,可按照本文中常見問題一一對照,特別注意截圖時間點,關鍵幀等信息。媒體工作流執行時,轉碼管道上綁定的隊列或通知機制是否同時生效目前媒體工作流觸發執行的作業,忽略轉碼管道上綁定的消息機制。 摘要: 媒體處理創建消息主題出現Only one topic can be created!錯誤 目前媒體處理每個用戶只能開一個管道,無法創建多管...

    scq000 評論0 收藏0
  • NPM酷庫:file-type,檢測文件類型

    摘要:通常,我們的程序通過文件后綴名檢測類型,這是最直接簡潔的方式。原理可以直接檢測一個數據流,得到這個數據的內容文件類型。的原理是檢測文件數據的。通常情況下,一些知名的文件類型,在其文件開頭的幾個字節用來標志其文件類型,這幾個字節就叫做。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 通常,我們的程序通過文件后綴名檢測類型,這是最直接簡潔的方式。但是,在一些情況下,直接通過后綴名檢測文件...

    CarterLi 評論0 收藏0
  • 前端容器化——Node.Js & Mongodb

    摘要:另外,中間件還提供了諸如日志記錄之類功能,便于查詢任務狀態以及信息。 DevOps大熱,這里我們借著上線一個node中間件,簡單介紹下前端容器化相關的內容 原文:http://blog.thonatos.com/dockerizing-your-frontend-project/ (很多東西還來不及寫,有時間再補充吧T.T,比如:如何快速在服務器部署vpn神馬の一定很有用...) In...

    luckyw 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<