日期:2014-05-18  浏览次数:20827 次

大数据的查询和比对
RT,在生产的流水线上会扫描物品的序列号和MAC地址,但是在存入数据库之前,会跟之前的历史数据作比较,看看有没有重复,MAC地址是不允许有重复的,重复的报错,怎么样才能让查询和比对的效率高
  客户要求数据保存5年以上及个别客户时10年,也就是每次扫描的时候要和之前所有的数据作比较,每年的数据大概在1000W左右,响应时间要控制在1.5s以内,不然就达不到产能,现在数据库只能几百W条数据,现在都感觉有点慢了,索引也建了,但是效果还是不明显,因为其他客户的数据也是写入这个表,每天的数据大概在20W左右.
  现有的措施:
  1.在表上建立了索引,提高查询料率,但是太多就会影响插入效率
  2.每天将30天之前的数据写入历史表,但是做比较的时候还是要查询全表
也想过分客户建表,这样每个表中的数据就会少点,但是BOSS不同意.数据库是SQL 2008

------解决方案--------------------
可以考虑表分区
------解决方案--------------------
试试根据MAC地址来分表。
设计一个函数F,使 F(mac)=1-10。
然后查询和比对对应的表
------解决方案--------------------
分表 分区
------解决方案--------------------
这个没有办法,大数据量的情况下要进行 频繁 准确 的查询,这个不能只依靠软件来解决,再完美的方法都是需要时间的。
你的需求和搜索引擎还不一样,别看搜索引擎速度挺快,数据量很大,但是人家有各种索引,更主要的是,索搜引擎没有 准确 这个需求,不需要保证结果是正确且完整的。

想解决,只能是想办法把数据源变小,或者拆分。
比如按照MAC,分段拆分。这样每一次可以去一个更小的范围内查询。