优化系列|游戏数据表拆分优化经典案例

1。目的
通过对比测试,分析某数据表tabC拆分方案前后性能对比,确定拆分方案的可行性。


2。方法
对拆分方案前后两种类型进行对比测试。
同时,每次测试中采用两种更新方式:
1。和原来类似,对数据表所有字段的更新分多次
2。对数据表所有字段的更新一次性完成


3。环境
本次测试采用线上实际数据导入.tabC表共万有132行记录,全表共100克。
将所有字段重新组合,确保每个分表的实际行长度不高于8 kb,拆分成三个子表,大小分别是:
tabC_1。炎症性肠病796
tabC_2。ibd 10.2 g
tabC_3。ibd 8.4 g

之后再进行全表随机更新,每轮测试都在脚本中并发调用存储过程来完成,最大10个并发进程。
每次测试之前都重启mysqld,且无其他额外压力,确保环境公平。


4。结果


全表分表多次update02:56:4900:16:06一次update00:54:0200:08:56


5。结论
从测试结果很明显看到,分表后的并发更新效率远比比分表前高,而且,如果对tblC表的多次更新能合并到一起的话,更能获得很大提高。

因此建议:
1。对类似tblC表的其他表实施同样的拆分方案;
2。对数据表的更新最好一次性完成,而不是多个字段分多次,将一个事务变成多个事务;


分表原则:
1。从原表中分离出文本字段;
2。将分离出的文本字段重新组合,确保每个分表的实际行长度不高于8 kb;
3。可能的话,不使用文本,实际长度小于255的,直接转成varchar;


http://zhishuedu.com

优化系列|游戏数据表拆分优化经典案例