mysqlpump淺談:mysqlpump併發的最小粒度是庫還是表,還是行?
mysqlpump這個工具網上有大把大把的文章介紹,相信各位都用得爐火純青。網上的文章都介紹了mysqlpump的一大特色是併發,可是,沒有說清楚mysqlpump併發的最小粒度是什麼?它是怎麼工作原理?現在我就簡單研究下,如有錯誤,還請各位不吝指教!
首先準備環境,來看下:redhat7.5 +mysql5.7.22 原始碼安裝。我們使用test庫,裡面有12張表,其中tab2和t22這兩張表有476萬條資料,總共3.6G容量。
廢話不多說。我們開始測試:
我用了4個併發執行緒,採取的一致性匯出。然後匯出的庫是test.整個匯出很簡單。現在問題來了,這4個併發執行緒是怎麼分工合作的呢?哪個執行緒匯出大表tab2?哪個執行緒匯出大表t22?mysqlpump又是如何判斷這些資料的呢?其實要回答這些問題,我們需要使用命令show processlist ,以及general_log.
來看下processlist 都記錄了啥:
發現總共有6個會話。其中id 2會話是我的登入會話。還有5個會話。讀到這裡首先會有一個疑問,配置了4個會話,怎麼會有5個嗎?問題2,貌似只有id 4,5會話在工作,id 3,6,7會話都沒有做什麼,事情真的是這樣嗎?
來看下general log
看看這些日誌,就可以回答我的問題了:
1. 5個執行緒分工是這樣:id7會話是管理執行緒,其餘4個匯出執行緒,所以4+1=5,總共5個執行緒。
2. id 4,5執行緒分別匯出表t22,tab2.
3. id 3,6執行緒不是沒有事情幹,而是人家也分配了任務,也匯出了資料,只不過匯出任務瞬間完成了。
4. 並行的最小粒度是表,不是庫database,也不是行。其實我覺得如果mysqlpump並行再優化,可以到行。比如分配多幾個執行緒匯出大表資料,比如分配2執行緒匯出表t22的400萬行資料,速度會更快。但是控制更加複雜。
5.管理執行緒知道分配2個執行緒匯出2個大表,還算挺智慧的哦。
不知道各位看明白了沒有,沒有看明白,思考一下。
現在總結如下:
mysqlpump併發執行緒會有一個管理執行緒,然後有N個工作執行緒。併發匯出的時候,管理執行緒會判斷找出大表來,並分配任務。匯出資料最小的單位是表。
最後一個問題,mysqlpump是怎麼做到一致性匯出的呢?這個問題留給各位自己思考。
附上mysql做備份主從同步命令:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-2646610/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql for update是鎖表還是鎖行MySql
- mysqlpump 資料庫備份程式MySql資料庫
- 資料庫是平替還是改造?資料庫
- pdf是圖片還是文件 pdf格式是文字檔案還是影像檔案
- 筆記: 判斷lib庫是動態庫還是靜態庫筆記
- 到底是倉庫模式好,還是MVC模式好?模式MVC
- 語言是 Go 還是 Golang?Golang
- 併發環境下,先運算元據庫還是先操作快取?快取
- 研發團隊是該制定OKR還是KPI?OKRKPI
- 突破還是災難? 淺談遊戲中的身份轉換與敘事遊戲
- 檢視已經建立的svn庫格式是 FSFS 還是 VDFS 的?
- Oracle併購 為SAP還是為自己?(轉)Oracle
- java還是C?Java
- 還是要理性
- 逢當機必談起,多雲是真火還是假熱?
- 資料是黃金還是垃圾?
- PHP Mysql support: 是mysql 還是mysqlnd?PHPMySql
- 檢視Linux是ubuntu還是centosLinuxUbuntuCentOS
- RAM是記憶體還是外存記憶體
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- 35 歲 + 的測試們,你們還在堅持呢?還是已經開始轉行?還是在迷茫?
- 談談建網站是選擇雲伺服器還是雲虛擬主機?網站伺服器
- checked屬性值是true還是checked
- 健康還是工作,這是個問題
- 到底是Java好還是Python好?JavaPython
- spring和springmvc是單例還是多例SpringMVC單例
- Redis不僅僅是快取,還是……Redis快取
- [PEP] 還是卡場
- 出海、出海還是出海?
- 技術還是思想?
- 蘋果減稅,是「大發善心」還是「另有所圖」?蘋果
- 判斷使用的是 x11 還是 wayland
- 【Spring】AOP的代理預設是Jdk還是Cglib?SpringJDKCGLib
- MySQL 5.7 mysqlpump 備份工具說明MySql
- 淺談應該購買英特爾Mac還是等待購買基於Arm的MacMac
- Python秒算24點,行還是不行?Python
- redis自學(22)Redis是單執行緒還是多執行緒?Redis執行緒
- 到底是先更新資料庫還是先更新快取?資料庫快取