现在的位置: 首页 > 综合 > 正文

重用大表空闲字段所带来的数据处理问题

2013年12月02日 ⁄ 综合 ⁄ 共 581字 ⁄ 字号 评论关闭

这下面是某业务的一个需求,需要在一张大表(test)中重用以前的ordercost字段,用以计数。因为重用,以前的数据,开发希望清0。但这张核心大表访问量实在太高,并且需要清零的记录数太大,如果要update的话,将会花很长的时间。

开发: 等明天前台发布后,能把test表的ordercost字段清零吗?
丹臣: 我查查数据量有多少?
丹臣: select count(*) from test where ordercost<>0;
  COUNT(*)
----------
  42771713   --dw给我提供的数据
丹臣: 数据量太大了
丹臣: 以前的数据有没有什么特征?
开发: 没有什么特征啊
开发: 应该一直在维护的
丹臣: 以前的数据好像都是很大的
开发: 嗯
丹臣: 我查一下这个字段的最小值
丹臣: 如果要更新,这个数据量太大了
丹臣: 1160331349608

在以上数据的支撑下,与开发沟通,因为此项业务所用的ordercost字段,最大的值也才几十万左右,通过在应用程序里加一点逻辑,如果此字段数
据>
500万,那就取值为0,这样就可以不用去更新test这张超级大表了。这并不需要太多的技术,比如说采用批量更新大表的手段,而是采用合理的策略去避免
这样的操作。

做产品DBA,是一件非常灵活的工作。如果大家以后也遇到类似的案例,也请发出来,大家共同成长!最后,谢谢dw提供了以上的统计数据。

--EOF--

抱歉!评论已关闭.