1. 目的
通過對比測試,分析某數據表tabC拆分方案前后性能對比,確定拆分方案的可行性。
2. 方法
對拆分方案前后兩種類型進行對比測試。
同時,每次測試中采用兩種更新方式:
1. 和原來類似,對數據表所有字段的更新分多次
2. 對數據表所有字段的更新一次性完成
3. 環境
本次測試采用線上實際數據導入。tabC表共有132萬行記錄,全表共100G。
將所有字段重新組合,確保每個分表的實際行長度不高于8KB,拆分成3個子表,大小分別是:
tabC_1.ibd 796M
tabC_2.ibd 10.2G
tabC_3.ibd 8.4G
之后再進行全表隨機更新,每輪測試都在腳本中并發調用存儲過程來完成,最大10個并發進程。
每次測試之前都重啟mysqld,且無其他額外壓力,確保環境公平。
4. 結果
全表 | 分表 | |
多次update | 02:56:49 | 00:16:06 |
一次update | 00:54:02 | 00:08:56 |
5. 結論
從測試結果很明顯看到,分表后的并發更新效率遠比比分表前高,而且,如果對tblC表的多次更新能合并到一起的話,更能獲得很大提高。
因此建議:
1. 對類似tblC表的其他表實施同樣的拆分方案;
2. 對數據表的更新最好一次性完成,而不是多個字段分多次,將一個事務變成多個事務;
分表原則:
1. 從原表中分離出text字段;
2. 將分離出的text字段重新組合,確保每個分表的實際行長度不高于8KB;
3. 可能的話,不使用text,實際長度小于255的,直接轉成varchar;
--------------------------------------分割線--------------------------------------
知數堂 (http://zhishuedu.com)培訓是由資深MySQL專家葉金榮、吳炳錫聯合推出的專業優質培訓品牌,主要有MySQL DBA實戰優化和Python運維開發課程,是業內最有良心、最有品質的培訓課程。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。