缩小包围圈,mysql效率提升千万倍

业务需求:

客服每天都会审核用户上传的学校名称,每天的审核结果需要应用到已有数据上


******************************************************************************************************************

“全量策略”操作思路:

1.将审核结果提取出来,对user_info(100*100)进行update操作,对于每张表来说,需要全量数据更新

2.将审核结果置位,表明操作已完成


“全量策略”导致的数据操作量:

1.当前累积有2万条学校数据需要处理;(读)

2.当前有1150万用户数据需要扫描;(写)

3.全量扫描需要处理2300亿次;


全量策略结果:

1.即使是并行10个进城执行,仍然一晚上跑不完数据

-----------------------------------------------------------------------------------------------------------------------------------------------

“有效目标集”操作思路:

1.并不对数据全量更新,先全亮扫描,然后缩小包围圈,只对需要更新的记录进行更新


“有效目标集”导致的数据操作量:

1.当前累积有2万条学校数据需要处理;(读)

2.当前有1150万用户数据需要扫描;(读)

3.内存中通过第一步结果过滤,需要处理的结果集变成了3万;(内存逻辑处理)

3.更新3万记录;(写)

******************************************************************************************************************


结论:

1.主要关注你需要关注的对象,尽量不要让任何一条多余的操作存在;

2.内存中的逻辑处理速度相当快,比mysql的操作快相当多,所以如果可以在内存中做一定的处理从而简化mysql的操作,请不要犹豫



你可能感兴趣的:(缩小包围圈,mysql效率提升千万倍)