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

wwlln闪电定位数据,存放、分析。使用sql server 2005 develop版本
处理闪电定位数据,使用sql server 2005 develop版本
一年数据已经占用了5G+(大约4k万条规模)
接下来面临一个选择

方案A 每年一个表,不同表数据结构相同
方案B 所有数据放一个表

请问高手,选哪个方案对使用方便和查询效率的折中点更合适?

------解决方案--------------------
一般来说性能有至少有2个瓶颈,一个是cpu一个是内存。通常可以通过升级硬件来达到性能优化,但纵向升级上限还是无法突破。

如果有一张很大的表,位于一块磁盘中。那么会发生的情况是,这张表的数据空间和索引空间都会比较大,而且所有应用都会拥挤到这张表上,不论单次查询的耗时还是并发量都会增加,随之磁盘io也会加大,使得系统资源达到上限。

sqlserver的分区表可以把一张表按照分区函数(比如时间)把每个数据段映射到一个逻辑文件,每个逻辑文件可以对应一个物理文件。这样由于单个文件变小,可以减少单次查询的cpu消耗,而且可以按照需求将这些文件分散在不同的物理硬盘上,也可以有效降低磁盘io竞争。

--------
楼主的闪电定位可能想表达的意思是类似于ketama的一致性hash问题,比如memcache的分布式算法。mssql官方目前还不支持;sns和很多门户几乎都是用多组mysql主-从来解决基础业务扩展,memcache来解决用户前端的并发