这样的“数据库结构”应该如何修正???
数据库中
“每天要存储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里 还提供了界面操作 很容易。 不过还是要多了解下再下手。
------解决方案--------------------盘符和物理磁盘是两回事。
------解决方案--------------------是物理盘,非盘符 逻辑盘的话 放在那里都一样。
------解决方案--------------------联机丛书就有操作指南
------解决方案--------------------http://kb.cnblogs.com/page/57359/
这里有个例子可以参考.
------解决方案--------------------最好的方法就是1个盘符一个物理磁盘。
------解决方案--------------------三块盘 如果是做了raid 其实就是一个物理盘 ,多几个文件组也方管理和升级。IO一样的,这里就不用考虑了。
------解决方案--------------------如果历史库,干脆每年放一个库好了
汇总的数据专门一个库
------解决方案--------------------那个主要是没有任何阵列的情况。一般有raid的I/O都可以。不过也要看RAID几。
------解决方案--------------------