优化系列 | 游戏数据表拆分优化经典案例
2016-12-05 22:00
330 查看
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. 结果
5. 结论
从测试结果很明显看到,分表后的并发更新效率远比比分表前高,而且,如果对tblC表的多次更新能合并到一起的话,更能获得很大提高。因此建议:
1. 对类似tblC表的其他表实施同样的拆分方案;
2. 对数据表的更新最好一次性完成,而不是多个字段分多次,将一个事务变成多个事务;
分表原则:
1. 从原表中分离出text字段;
2. 将分离出的text字段重新组合,确保每个分表的实际行长度不高于8KB;
3. 可能的话,不使用text,实际长度小于255的,直接转成varchar;
--------------------------------------分割线--------------------------------------知数堂 (http://zhishuedu.com)培训是由资深MySQL专家叶金荣、吴炳锡联合推出的专业优质培训品牌,主要有MySQL DBA实战优化和Python运维开发课程,是业内最有良心、最有品质的培训课程。
通过对比测试,分析某数据表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 |
从测试结果很明显看到,分表后的并发更新效率远比比分表前高,而且,如果对tblC表的多次更新能合并到一起的话,更能获得很大提高。因此建议:
1. 对类似tblC表的其他表实施同样的拆分方案;
2. 对数据表的更新最好一次性完成,而不是多个字段分多次,将一个事务变成多个事务;
分表原则:
1. 从原表中分离出text字段;
2. 将分离出的text字段重新组合,确保每个分表的实际行长度不高于8KB;
3. 可能的话,不使用text,实际长度小于255的,直接转成varchar;
--------------------------------------分割线--------------------------------------知数堂 (http://zhishuedu.com)培训是由资深MySQL专家叶金荣、吴炳锡联合推出的专业优质培训品牌,主要有MySQL DBA实战优化和Python运维开发课程,是业内最有良心、最有品质的培训课程。
相关文章推荐
- 优化系列 | 游戏数据表拆分优化经典案例
- (Mirage系列之八)Mirage经典案例之数据更新和恢复
- 竞速游戏经典之《极品飞车》系列完整回顾(图)
- [MySQL优化案例]系列 -- 无法使用查询缓存
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十) 大法师 – 华丽经典之轮回
- WPF编游戏系列 之九 物品清单再优化
- WPF编游戏系列 之五 数据绑定
- MySQL查询优化系列讲座之数据类型与效率
- Asp.Net 网站优化系列之数据库优化 分字诀 分表(纵向拆分,横向分区)
- sql 优化之:实现小数据量和海量数据的通用分页显示存储过程(系列四)
- [MySQL优化案例]系列 -- 在5.1的分区功能中混用InnoDB和MyISAM
- 网站优化经典经验分享系列一
- [MySQL优化案例]系列 -- OPTIMIZE的威力
- [MySQL优化案例]系列 -- 用TIMESTAMP类型取代INT和DATETIME
- 『Oracle数据复制容灾案例系列』兴业证券Oracle容灾案例
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十) 大法师 – 华丽经典之轮回
- [MySQL优化案例]系列 -- 带函数的查询条件
- 『Oracle数据复制容灾案例系列』中银国际证券Oracle容灾案例
- sql 优化之:实现小数据量和海量数据的通用分页显示存储过程(系列四)
- sql 优化之:实现小数据量和海量数据的通用分页显示存储过程(系列四)