日期:2014-05-17  浏览次数:20514 次

这样的“数据库结构”应该如何修正???
数据库中“每天要存储6500*24*4=624000”条数据,数据被存到了“历史表”,然后存到“时表”、“日表”、“月表”、“年表”。  

这样“时表”每天“156000”条数据。

这样“日表”每日“6500”条数据。

这样“月表”每月“6500”条数据。

这样“年表”每年“6500”条数据。

问题一:

      但是,从2004到2012年,“历史表”和“时表”中的数据积累的太多了,怎么办???       做“表分区”可以加快查询速度吗???    效果好吗???

问题二:

    如果修改数据库结构,是不是应该按照时间建表?      比如“历史表”和“小时表”按照“月份”来建表,这样可以控制“每个表中的数据量”。   但是这样随着时间的推移,“小时表”和“月份表”会越来越多?   这样会不会遗留什么问题???

问题三:
    如果建立多个数据库“历史库”、“小时库”、“日/月/年库”,“Web应用程序”访问数据库就会出现问题  ?     Web网站配置只能直接访问一个数据库,这时就要配置“应用服务器”了。
------解决方案--------------------
问题一:可以分区,但是由于时间太长,最好把某些年份,如04~09年的数据(假设而已),移到一个实体表,再对新表做按月分区(按什么分区最好根据你的用途,如每次以月份为单位,那就按月,如果年就按年。)。分区之后能减少查询扫描的范围和I/O的争用,并且插入的时候能并行插入,速度快很多。
问题二:由于你的这个需求主要围绕着时间,所以当然按时间来建表好,且时间列作为聚集索引。
问题三:分库的话可以用,但是可能会增加部分开销,比如关联几个库才能得到希望的数据。如果web只能访问一个库,那么你在访问其他库的时候要用:[库名].[架构名].[表名].[列名]这样的格式来访问即可。前提是你那个账号有访问多个数据库的权限。
------解决方案--------------------
问题1:用分区表 可加快查询速度,效果可以。具体测试下能快多少
问题2:不是很理解为什么要搞这么多表? 小时表 月表 年表 。。。求解释
问题3:web配置一个默认数据库A ,但是应用里可以用 select * from B.dbo.history 来访问B库里的表

------解决方案--------------------
分区表 一般按时间日期来,分区函数 分区架构 实施分区  网上很多资料可以参考。2008里 还提供了界面操作 很容易。 不过还是要多了解下再下手。
------解决方案--------------------
引用:
大师,将“分区的文件组”放在不同的“硬盘分区”,可以加快“I/O”速率是吧???

一般数据库服务器习惯于设置“两个盘符”,如果这样应该“多划分”几个盘出来啊,对吧。
盘符和物理磁盘是两回事。
------解决方案--------------------
是物理盘,非盘符 逻辑盘的话 放在那里都一样。
------解决方案--------------------
引用:
引用:
分区表 一般按时间日期来,分区函数 分区架构 实施分区  网上很多资料可以参考。2008里 还提供了界面操作 很容易。 不过还是要多了解下再下手。

SQl  Server2008  有界面操作啊。       有类似的实例可以参考吗???
联机丛书就有操作指南
------解决方案--------------------
http://kb.cnblogs.com/page/57359/
这里有个例子可以参考.
------解决方案--------------------
引用:
引用:
是物理盘,非盘符 逻辑盘的话 放在那里都一样。

要用“物理盘”啊。服务器虽然有“三块硬盘”,但是操作系统看上去还是“一块硬盘”啊,只能看到“逻辑盘符”。    怎么将“文件组”分配到不同的“物理硬盘”???   大师。。。
最好的方法就是1个盘符一个物理磁盘。
------解决方案--------------------
三块盘 如果是做了raid 其实就是一个物理盘 ,多几个文件组也方管理和升级。IO一样的,这里就不用考虑了。
------解决方案--------------------
如果历史库,干脆每年放一个库好了
汇总的数据专门一个库
------解决方案--------------------
引用:
引用:
引用:引用:
是物理盘,非盘符 逻辑盘的话 放在那里都一样。

要用“物理盘”啊。服务器虽然有“三块硬盘”,但是操作系统看上去还是“一块硬盘”啊,只能看到“逻辑盘符”。    怎么将“文件组”分配到不同的“物理硬盘”???   大师。。。最好的方法就是1个盘符一个物理磁盘。
……
那个主要是没有任何阵列的情况。一般有raid的I/O都可以。不过也要看RAID几。
------解决方案--------------------