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
- mysqldump與mysqlpumpMySql
- 資料庫是平替還是改造?資料庫
- mysqlpump 資料庫備份程式MySql資料庫
- 是人為shutdown,還是異常宕庫?
- pdf是圖片還是文件 pdf格式是文字檔案還是影像檔案
- 語言是 Go 還是 Golang?Golang
- 智慧汽車到底是汽車行業 還是資訊行業?行業
- 研發團隊是該制定OKR還是KPI?OKRKPI
- 突破還是災難? 淺談遊戲中的身份轉換與敘事遊戲
- 到底是倉庫模式好,還是MVC模式好?模式MVC
- 是先做資料庫設計還是先建模資料庫
- java還是C?Java
- Laravel 還是 Lumen?Laravel
- TCP 還是 UDP?TCPUDP
- 還是要理性
- Oracle併購 為SAP還是為自己?(轉)Oracle
- 併發環境下,先運算元據庫還是先操作快取?快取
- PHP Mysql support: 是mysql 還是mysqlnd?PHPMySql
- 資料是黃金還是垃圾?
- RAM是記憶體還是外存記憶體
- 檢視已經建立的svn庫格式是 FSFS 還是 VDFS 的?
- 蘋果減稅,是「大發善心」還是「另有所圖」?蘋果
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- 筆記: 判斷lib庫是動態庫還是靜態庫筆記
- 大衛談學習3:方法還是問題,這是個問題!
- 談談APP架構選型:ReactNative還是HBuilderAPP架構ReactUI
- redis自學(22)Redis是單執行緒還是多執行緒?Redis執行緒
- tomcat的執行的時候,GC進行記憶體回收,回收後的記憶體是還給OS還是還給JVMTomcatGC記憶體JVM
- 健康還是工作,這是個問題
- checked屬性值是true還是checked
- Redis不僅僅是快取,還是……Redis快取
- 檢視Linux是ubuntu還是centosLinuxUbuntuCentOS
- CNNIC:電商未來是“輕”還是“重”CNN
- Image Map,是對映還是地圖?地圖
- SOA和敏捷:是朋友?還是敵人?敏捷
- Java 是傳值還是傳引用 (轉)Java
- 技術還是思想?