How to process hundreds of millions of data in SQL Server ?
如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下六方面进行:
一. 用SqlBulkCopy进行插入
二.减少每个表的数据总量,避免大表操作,所有的操作均可以按省或者时间分开,这样无论从时间或者地域维度,基本上可以将大表拆成30张以上的小表操作,甚至更多。然后再对结果进行合并,应该可以避免上述问题。
三.正确使用索引:
(1) 索引之后,按索引字段重复最少的来排序,会达到最优的效果。
(2) 把非索引列的结果列放在包含列中。
(3) 查询的时候只返回所需的字段
四.读写分离:
可以尝试读写分离,写两个库,一个是实时库,一个是只读库。一个小时内的数据查询实时库,一个小时之前的数据查询只读库;只读库定时存储,然后建立索引;超过一个星期的数据,进行分析处理再存储。这样,无论查询什么时间段的数据,都能够正确处理了——一个小时之内的查询实时库,一个小时到一个星期内的查询只读库,一个星期之前的查询报表库。在只读库中,定时重建索引即可。
五.存储优化
(1) 建议将我们的数据库也单独分到一组磁盘上去,不要跟系统竞争。
(2) 使用SSD,强烈建议
六、使用最新的SQL Server版本,64位系统
以上建议思路,可以用作面试。
来源:51CTO
作者:songlihuan
链接:https://blog.51cto.com/songlihuan/2481152